printf Type Field Characters
The type character of the format specification indicates that the corresponding argument is to be interpreted as a character, string, or number. The type character is the only required format field, and it appears after any optional format fields.
Note
The C, n, p, S, and Z type characters, and the behavior of the c and s type characters when used with the printf and wprintf functions, are Microsoft extensions and are not ANSI compatible.
printf Type Field Characters
Character |
Type |
Output format |
---|---|---|
c |
int or wint_t |
When used with printf functions, specifies a single-byte character; when used with wprintf functions, specifies a wide character. |
C |
int or wint_t |
When used with printf functions, specifies a wide character; when used with wprintf functions, specifies a single-byte character. |
d |
int |
Signed decimal integer. |
i |
int |
Signed decimal integer. |
o |
int |
Unsigned octal integer. |
u |
int |
Unsigned decimal integer. |
x |
int |
Unsigned hexadecimal integer, using "abcdef." |
X |
int |
Unsigned hexadecimal integer, using "ABCDEF." |
e |
double |
Signed value having the form [ – ]d.dddd e [sign]dd[d] where d is a single decimal digit, dddd is one or more decimal digits, dd[d] is two or three decimal digits depending on the output format and size of the exponent, and sign is + or –. |
E |
double |
Identical to the e format except that E rather than e introduces the exponent. |
f |
double |
Signed value having the form [ – ]dddd.dddd, where dddd is one or more decimal digits. The number of digits before the decimal point depends on the magnitude of the number, and the number of digits after the decimal point depends on the requested precision. |
g |
double |
Signed value are displayed in f or e format, whichever is more compact for the given value and precision. The e format is used only when the exponent of the value is less than –4 or greater than or equal to the precision argument. Trailing zeros are truncated, and the decimal point appears only if one or more digits follow it. |
G |
double |
Identical to the g format, except that E, rather than e, introduces the exponent (where appropriate). |
a |
double |
Signed hexadecimal double precision floating point value having the form [−]0xh.hhhh p±dd, where h.hhhh are the hex digits (using lower case letters) of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point. |
A |
double |
Signed hexadecimal double precision floating point value having the form [−]0Xh.hhhh P±dd, where h.hhhh are the hex digits (using capital letters) of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point. |
n |
Pointer to integer |
Number of characters successfully written so far to the stream or buffer; this value is stored in the integer whose address is given as the argument. See Security Note below. |
p |
Pointer to void |
Displays the argument as an address in hexadecimal digits. |
s |
String |
When used with printf functions, specifies a single-byte–character string; when used with wprintf functions, specifies a wide-character string. Characters are displayed up to the first null character or until the precision value is reached. |
S |
String |
When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies a single-byte–character string. Characters are displayed up to the first null character or until the precision value is reached. |
Z |
UNICODE_STRING structure |
When the address of a UNICODE_STRING structure is passed as the argument, displays the Unicode string that is contained in the buffer pointed to by the Buffer field of the structure. The Length field of the structure must be set to the length, in bytes, of the Unicode string. The MaximumLength field of the structure must be set to the length, in bytes, of the buffer. The Z type character is typically used only in driver debugging functions that use a format specification, such as dbgPrint and kdPrint. |
Note If the argument corresponding to %s or %S is a null pointer, "(null)" will be displayed.
Note In all exponential formats, the default number of digits of exponent to display is three. Using the _set_output_format function, the number of digits displayed may be set to two, expanding to three if demanded by the size of exponent.
Security Note The %n format is inherently insecure and is disabled by default; if %n is encountered in a format string, the invalid parameter handler is invoked as described in Parameter Validation. To enable %n support, see _set_printf_count_output.
See Also
Reference
printf, _printf_l, wprintf, _wprintf_l
Format Specification Fields: printf and wprintf Functions
Change History
Date |
History |
Reason |
---|---|---|
May 2011 |
Documented the Microsoft-specific 'Z' type character. |
Information enhancement. |