Its now built-in in Serial class in the Arduino framework. No need for additional library or function.
The usage will depend of the data type of your variables.
If they are int, it would be %d or %i :
Serial.printf("Var 1:%d\nVar 2:%d\nVar 3:%d\n", var1, var2, var3);
If
If they are string, it would be %s
Wrapper for printf
You can change the limit based on your requirements
#include <stdarg.h>
void p(char *fmt, ... ){
char buf[128]; // resulting string limited to 128 chars
va_list args;
va_start (args, fmt );
vsnprintf(buf, 128, fmt, args);
va_end (args);
Serial.print(buf); // Output result to Serial
}
Source: https://playground.arduino.cc/Main/Printf
Usage examples:
Serial.printf("Var 1:%s\nVar 2:%s\nVar 3:%s\n", var1, var2, var3);
p("Var 1:%s\nVar 2:%s\nVar 3:%s\n", var1, var2, var3); // strings
p("Var 1:%d\nVar 2:%d\nVar 3:%d\n", var1, var2, var3); // numbers
ESP8266
Its built-in in Serial class of the framework. No need for additional library or function.
// strings
Serial.printf("Var 1:%s\nVar 2:%s\nVar 3:%s\n", var1, var2, var3);
// numbers
Serial.printf("Var 1:%d\nVar 2:%d\nVar 3:%d\n", var1, var2, var3);
More details about formatting tips on the printf format reference page : http://www.cplusplus.com/reference/cstdio/printf/
\n is the escape sequence for the line feed.
Escape sequences are used to represent certain special characters within string literals and character literals.
Source : http://en.cppreference.com/w/cpp/language/escape
[EDIT]
- As @Juraj mentioned, it's not available on most of the AVR modules. So I added ESP8266 mention and a printf wrapper for common AVR modules