Code | Format |
---|---|
%c | character |
%d | signed integers |
%i | signed integers |
%e | scientific notation, with a lowercase "e" |
%E | scientific notation, with a uppercase "E" |
%f | floating point |
%g | use %e or %f, whichever is shorter |
%G | use %E or %f, whichever is shorter |
%o | octal |
%s | a string of characters |
%u | unsigned integer |
%x | unsigned hexadecimal, with lowercase letters |
%X | unsigned hexadecimal, with uppercase letters |
%p | a pointer |
%n | the argument shall be a pointer to an integer into which is placed the number of characters written so far |
%% | a '%' sign |
An integer placed between a % sign and the format command acts as a minimum field width specifier, and pads the output with spaces or zeros to make it long enough. If you want to pad with zeros, place a zero before the minimum field width specifier:
%012d
You can also include a precision modifier, in the form of a .N where N is some number, before the format command:
%012.4d
The precision modifier has different meanings depending on the format command being used:
- With %e, %E, and %f, the precision modifier lets you specify the number of decimal places desired. For example, %12.6f will display a floating number at least 12 digits wide, with six decimal places.
- With %g and %G, the precision modifier determines the maximum number of significant digits displayed.
- With %s, the precision modifer simply acts as a maximumfield length, to complement the minimum field length that precedes the period.
All of printf()'s output is right-justified, unless you place a minus sign right after the % sign. For example,
%-12.4f
will display a floating point number with a minimum of 12 characters, 4 decimal places, and left justified. You may modify the %d, %i, %o, %u, and %x type specifiers with the letter l and the letter h to specify long and short data types (e.g. %hd means a short integer). The %e, %f, and %g type specifiers can have the letter l before them to indicate that a double follows. The %g, %f, and %e type specifiers can be preceded with the character '#' to ensure that the decimal point will be present, even if there are no decimal digits. The use of the '#' character with the %x type specifier indicates that the hexidecimal number should be printed with the '0x' prefix. The use of the '#' character with the %o type specifier indicates that the octal value should be displayed with a 0 prefix.