printf
By Example
C'stdio.h
provides a set of function to print values on the screen
following a provided format: printf
, sprintf
, fprintf
, dprintf
,
snprintf
and their counterparts to handle variadic arguments
vprintf
, vsprintf
, vfprintf
, vdprintf
, vsnprintf
.
This document is just a set of example to remember how to specify the format.
The format has the following format:
%[<flags>][<field's width>][.<precision>][<length modifier>]<conversion specifier>
Generic Examples
Complete documentation: man 3 printf
Strings/Characters
Format | Values | Display | Comments |
---|---|---|---|
%c%c%c%c%c |
'H', 'e', 'l', 'l', 'o' | Hello |
|
%s %s |
"Hello", "World" | Hello World |
|
%10s %s |
"Hello", "World" | = Hello World= | Right justification by default |
%-10s %s |
"Hello", "World" | Hello World |
Left justification on-demand |
%10s |
"LongLongWord" | LongLongWord |
Minimal width |
%10.5s |
"LongLongWord" | = LongL= | Limit the output |
%-10.5s |
"LongLongWord" | =LongL = | Limit the output left justified |
Integers
Format | Values | Display | Comments |
---|---|---|---|
%d |
0xDEADBEEF | -559038737 |
%d and %i are aliases |
%+d |
42 | +42 |
Prefix with '+' for positive numbers |
%u |
0xDEADBEEF | 3735928559 |
Unsigned representation |
%o |
0xDEADBEEF | 33653337357 |
Octal representation |
%x |
0xDEADBEEF | deadbeef |
Hexadecimal representation |
%X |
0xDEADBEEF | DEADBEEF |
Hexadecimal upper case |
Floats
Format | Values | Display | Comments |
---|---|---|---|
%.3f |
double faraday | 96485.332 |
Precision is the number of digits after |
%f |
double faraday | 96485.332123 |
Precision is 6 by default |
%.9g |
double faraday | 96485.3321 |
Precision is the total number of digits |
%g |
double faraday | 96485.3 |
Precision is still 6 by default |
%.3g |
double faraday | 9.65e+04 |
|
%+.9f |
double faraday | +96485.332123300 |
More decimals |
%e |
double faraday | 9.648533e+04 |
Exponent notation |
%E |
double faraday | 9.648533E+04 |
Exponent upper case |
%015.2f |
double faraday | 000000096485.33 |
Padding with 0 |
% 15.2f |
double faraday | = 96485.33= | Padding with spaces (default) |
%0+15.2f |
double faraday | +00000096485.33 |
Some flags combinations |
%a |
double faraday | 0x1.78e555060857cp+16 |
Hexadecimal notation |
Pointers
Format | Values | Display | Comments |
---|---|---|---|
%p |
&someFunction | 0x559d6478a2f7 |
|
%p |
&someVariable | 0x559d6478d010 |
Glibc extensions
Format | Values | Display | Comments |
---|---|---|---|
%m |
nothing | Success |
Display errno |
%m |
nothing | No such file or directory |
Display errno after an error |
Go Extensions
Complete documentation: go doc fmt
Generic
Format | Values | Display | Comments |
---|---|---|---|
%v | {1 3.14} | {1 3.14} |
Generic value |
%+v | {1 3.14} | {a:1 b:3.14} |
Value with field names |
%#v | {1 3.14} | main.S{a:1, b:3.14} |
Go-syntax |
%T | {1 3.14} | main.S |
Type |
Strings
Format | Values | Display | Comments |
---|---|---|---|
%q | "Hello World!" | "Hello World!" |
Quoted strings |
% x | "\xde\xad\xbe\xbe" | de ad be ef |
Spaced hexadecimal |
Booleans
Format | Values | Display | Comments |
---|---|---|---|
%t/%t | true, false | true/false |
Boolean |
Integers
Format | Values | Display | Comments |
---|---|---|---|
%b | 127 | 1111111 |
Base 2 |
%q | 127 | '\u007f' |
Singly quoted character literal |
Slices
Format | Values | Display | Comments |
---|---|---|---|
%p | ["Hello" "World"] | 0xc0000c4020 |
Address of the first element in a slice |