Print this page
12953 convert printf(3c) and vprintf(3c) to mdoc
Change-Id: Iffbfe29bbd443e1a7ad0fc33fd7a7851428a3dc8
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/man/man3c/printf.3c.man.txt
+++ new/usr/src/man/man3c/printf.3c.man.txt
1 1 PRINTF(3C) Standard C Library Functions PRINTF(3C)
2 2
3 -
4 -
5 3 NAME
6 - printf, fprintf, sprintf, snprintf, asprintf - print formatted output
4 + printf, fprintf, sprintf, snprintf, asprintf - print formatted output
7 5
6 +LIBRARY
7 + Standard C Library (libc, -lc)
8 +
8 9 SYNOPSIS
9 - #include <stdio.h>
10 + #include <stdio.h>
10 11
11 - int printf(const char *restrict format,
12 - /* args*/ ...);
12 + int
13 + printf(const char *restrict format, /* args */ ...);
13 14
15 + int
16 + fprintf(FILE *restrict stream, const char *restrict format,
17 + /* args */ ...);
14 18
15 - int fprintf(FILE *restrict stream, const char *restrict format,
16 - /* args*/ ...);
19 + int
20 + sprintf(char *restrict s, const char *restrict format, /* args */ ...);
17 21
22 + int
23 + snprintf(char *restrict s, size_t n, const char *restrict format,
24 + /* args */ ...);
18 25
19 - int sprintf(char *restrict s, const char *restrict format,
20 - /* args*/ ...);
26 + int
27 + asprintf(char **ret, const char *restrict format, /* args */ ...);
21 28
22 -
23 - int snprintf(char *restrict s, size_t n,
24 - const char *restrict format, /* args*/ ...);
25 -
26 -
27 - int asprintf(char ** ret, const char *restrict format,
28 - /* args*/ ...);
29 -
30 -
31 29 DESCRIPTION
32 - The printf() function places output on the standard output stream
33 - stdout.
30 + The printf() function places output on the standard output stream stdout.
34 31
32 + The fprintf() function places output on on the named output stream
33 + stream.
35 34
36 - The fprintf() function places output on on the named output stream
37 - stream.
35 + The sprintf() function places output, followed by the null byte (`\0'),
36 + in consecutive bytes starting at s; it is the user's responsibility to
37 + ensure that enough storage is available.
38 38
39 + The snprintf() function is identical to sprintf() with the addition of
40 + the argument n, which specifies the size of the buffer referred to by s.
41 + If n is 0, nothing is written and s can be a NULL pointer. Otherwise,
42 + output bytes beyond the n-1st are discarded instead of being written to
43 + the array and a null byte is written at the end of the bytes actually
44 + written into the array.
39 45
40 - The sprintf() function places output, followed by the null byte (\0),
41 - in consecutive bytes starting at s; it is the user's responsibility to
42 - ensure that enough storage is available.
46 + The asprintf() function is the same as the sprintf() function except that
47 + it returns, in the ret argument, a pointer to a buffer sufficiently large
48 + to hold the output string. This pointer should be passed to free(3C) to
49 + release the allocated storage when it is no longer needed. If sufficient
50 + space cannot be allocated, the asprintf() function returns -1 and sets
51 + ret to be a NULL pointer.
43 52
53 + Each of these functions converts, formats, and prints its arguments under
54 + control of the format. The format is a character string, beginning and
55 + ending in its initial shift state, if any. The format is composed of
56 + zero or more directives: ordinary characters, which are simply copied to
57 + the output stream and conversion specifications, each of which results in
58 + the fetching of zero or more arguments. The results are undefined if
59 + there are insufficient arguments for the format. If the format is
60 + exhausted while arguments remain, the excess arguments are evaluated but
61 + are otherwise ignored.
44 62
45 - The snprintf() function is identical to sprintf() with the addition of
46 - the argument n, which specifies the size of the buffer referred to by
47 - s. If n is 0, nothing is written and s can be a null pointer.
48 - Otherwise, output bytes beyond the n-1st are discarded instead of being
49 - written to the array and a null byte is written at the end of the bytes
50 - actually written into the array.
63 + Conversions can be applied to the nth argument after the format in the
64 + argument list, rather than to the next unused argument. In this case,
65 + the conversion specifier % (see below) is replaced by the sequence %n$,
66 + where n is a decimal integer in the range [1, NL_ARGMAX], giving the
67 + position of the argument in the argument list. This feature provides for
68 + the definition of format strings that select arguments in an order
69 + appropriate to specific languages (see the EXAMPLES section).
51 70
71 + In format strings containing the %n$ form of conversion specifications,
72 + numbered arguments in the argument list can be referenced from the format
73 + string as many times as required.
52 74
53 - The asprintf() function is the same as the sprintf() function except
54 - that it returns, in the ret argument, a pointer to a buffer
55 - sufficiently large to hold the output string. This pointer should be
56 - passed to free(3C) to release the allocated storage when it is no
57 - longer needed. If sufficient space cannot be allocated, the asprintf()
58 - function returns -1 and sets ret to be a NULL pointer.
75 + In format strings containing the % form of conversion specifications,
76 + each argument in the argument list is used exactly once.
59 77
78 + All forms of the printf() functions allow for the insertion of a
79 + language-dependent radix character in the output string. The radix
80 + character is defined by the program's locale (category LC_NUMERIC). In
81 + the POSIX locale, or in a locale where the radix character is not
82 + defined, the radix character defaults to a period (.).
60 83
61 - Each of these functions converts, formats, and prints its arguments
62 - under control of the format. The format is a character string,
63 - beginning and ending in its initial shift state, if any. The format is
64 - composed of zero or more directives: ordinary characters, which are
65 - simply copied to the output stream and conversion specifications, each
66 - of which results in the fetching of zero or more arguments. The results
67 - are undefined if there are insufficient arguments for the format. If
68 - the format is exhausted while arguments remain, the excess arguments
69 - are evaluated but are otherwise ignored.
70 -
71 -
72 - Conversions can be applied to the nth argument after the format in the
73 - argument list, rather than to the next unused argument. In this case,
74 - the conversion specifier % (see below) is replaced by the sequence %n$,
75 - where n is a decimal integer in the range [1, NL_ARGMAX], giving the
76 - position of the argument in the argument list. This feature provides
77 - for the definition of format strings that select arguments in an order
78 - appropriate to specific languages (see the EXAMPLES section).
79 -
80 -
81 - In format strings containing the %n$ form of conversion specifications,
82 - numbered arguments in the argument list can be referenced from the
83 - format string as many times as required.
84 -
85 -
86 - In format strings containing the % form of conversion specifications,
87 - each argument in the argument list is used exactly once.
88 -
89 -
90 - All forms of the printf() functions allow for the insertion of a
91 - language-dependent radix character in the output string. The radix
92 - character is defined by the program's locale (category LC_NUMERIC). In
93 - the POSIX locale, or in a locale where the radix character is not
94 - defined, the radix character defaults to a period (.).
95 -
96 84 Conversion Specifications
97 - Each conversion specification is introduced by the % character or by
98 - the character sequence %n$, after which the following appear in
99 - sequence:
85 + Each conversion specification is introduced by the % character or by the
86 + character sequence %n$, after which the following appear in sequence:
100 87
101 - o An optional field, consisting of a decimal digit string
102 - followed by a $, specifying the next argument to be
103 - converted. If this field is not provided, the args following
104 - the last argument converted will be used.
88 + o An optional field, consisting of a decimal digit string followed by a
89 + $, specifying the next argument to be converted. If this field is
90 + not provided, the args following the last argument converted will be
91 + used.
105 92
106 - o Zero or more flags (in any order), which modify the meaning
107 - of the conversion specification.
93 + o Zero or more flags (in any order), which modify the meaning of the
94 + conversion specification.
108 95
109 - o An optional minimum field width. If the converted value has
110 - fewer bytes than the field width, it will be padded with
111 - spaces by default on the left; it will be padded on the
112 - right, if the left-adjustment flag (-), described below, is
113 - given to the field width. The field width takes the form of
114 - an asterisk (*), described below, or a decimal integer.
96 + o An optional minimum field width. If the converted value has fewer
97 + bytes than the field width, it will be padded with spaces by default
98 + on the left; it will be padded on the right, if the left-adjustment
99 + flag (-), described below, is given to the field width. The field
100 + width takes the form of an asterisk (*), described below, or a
101 + decimal integer.
115 102
116 - If the conversion specifier is s, a standard-conforming
117 - application (see standards(5)) interprets the field width as
118 - the minimum number of bytes to be printed; an application
119 - that is not standard-conforming interprets the field width
120 - as the minimum number of columns of screen display. For an
121 - application that is not standard-conforming, %10s means if
122 - the converted value has a screen width of 7 columns, 3
123 - spaces would be padded on the right.
103 + If the conversion specifier is s, a standard-conforming application
104 + (see standards(5)) interprets the field width as the minimum number
105 + of bytes to be printed; an application that is not standard-
106 + conforming interprets the field width as the minimum number of
107 + columns of screen display. For an application that is not standard-
108 + conforming, `%10s' means if the converted value has a screen width of
109 + 7 columns, 3 spaces would be padded on the right.
124 110
125 - If the format is %ws, then the field width should be
126 - interpreted as the minimum number of columns of screen
127 - display.
111 + If the format is %ws, then the field width should be interpreted as
112 + the minimum number of columns of screen display.
128 113
129 - o An optional precision that gives the minimum number of
130 - digits to appear for the d, i, o, u, x, and X conversions
131 - (the field is padded with leading zeros); the number of
132 - digits to appear after the radix character for the a, A, e,
133 - E, f, and F conversions, the maximum number of significant
134 - digits for the g and G conversions; or the maximum number of
135 - bytes to be printed from a string in s and S conversions.
136 - The precision takes the form of a period (.) followed either
137 - by an asterisk (*), described below, or an optional decimal
138 - digit string, where a null digit string is treated as 0. If
139 - a precision appears with any other conversion specifier, the
140 - behavior is undefined.
114 + o An optional precision that gives the minimum number of digits to
115 + appear for the d, i, o, u, x, and X conversions (the field is padded
116 + with leading zeros); the number of digits to appear after the radix
117 + character for the a, A, e, E, f, and F conversions, the maximum
118 + number of significant digits for the g and G conversions; or the
119 + maximum number of bytes to be printed from a string in s and S
120 + conversions. The precision takes the form of a period (.) followed
121 + either by an asterisk (*), described below, or an optional decimal
122 + digit string, where a null digit string is treated as 0. If a
123 + precision appears with any other conversion specifier, the behavior
124 + is undefined.
141 125
142 - If the conversion specifier is s or S, a standard-conforming
143 - application (see standards(5)) interprets the precision as
144 - the maximum number of bytes to be written; an application
145 - that is not standard-conforming interprets the precision as
146 - the maximum number of columns of screen display. For an
147 - application that is not standard-conforming, %.5s would
148 - print only the portion of the string that would display in 5
149 - screen columns. Only complete characters are written.
126 + If the conversion specifier is s or S, a standard-conforming
127 + application (see standards(5)) interprets the precision as the
128 + maximum number of bytes to be written; an application that is not
129 + standard-conforming interprets the precision as the maximum number of
130 + columns of screen display. For an application that is not standard-
131 + conforming, `%.5s' would print only the portion of the string that
132 + would display in 5 screen columns. Only complete characters are
133 + written.
150 134
151 - For %ws, the precision should be interpreted as the maximum
152 - number of columns of screen display. The precision takes the
153 - form of a period (.) followed by a decimal digit string; a
154 - null digit string is treated as zero. Padding specified by
155 - the precision overrides the padding specified by the field
156 - width.
135 + For %ws, the precision should be interpreted as the maximum number of
136 + columns of screen display. The precision takes the form of a period
137 + (.) followed by a decimal digit string; a null digit string is
138 + treated as zero. Padding specified by the precision overrides the
139 + padding specified by the field width.
157 140
158 - o An optional length modifier that specified the size of the
159 - argument.
141 + o An optional length modifier that specified the size of the argument.
160 142
161 - o A conversion specifier that indicates the type of conversion
162 - to be applied.
143 + o A conversion specifier that indicates the type of conversion to be
144 + applied.
163 145
146 + A field width, or precision, or both can be indicated by an asterisk (*).
147 + In this case, an argument of type int supplies the field width or
148 + precision. Arguments specifying field width, or precision, or both must
149 + appear in that order before the argument, if any, to be converted. A
150 + negative field width is taken as a - flag followed by a positive field
151 + width. A negative precision is taken as if the precision were omitted.
152 + In format strings containing the %n$ form of a conversion specification,
153 + a field width or precision may be indicated by the sequence *m$, where m
154 + is a decimal integer in the range [1, NL_ARGMAX] giving the position in
155 + the argument list (after the format argument) of an integer argument
156 + containing the field width or precision, for example:
164 157
165 - A field width, or precision, or both can be indicated by an asterisk
166 - (*) . In this case, an argument of type int supplies the field width or
167 - precision. Arguments specifying field width, or precision, or both must
168 - appear in that order before the argument, if any, to be converted. A
169 - negative field width is taken as a - flag followed by a positive field
170 - width. A negative precision is taken as if the precision were omitted.
171 - In format strings containing the %n$ form of a conversion
172 - specification, a field width or precision may be indicated by the
173 - sequence *m$, where m is a decimal integer in the range [1, NL_ARGMAX]
174 - giving the position in the argument list (after the format argument) of
175 - an integer argument containing the field width or precision, for
176 - example:
158 + printf("%1$d:%2$.*3$d:%4$.*3$d\n", hour, min, precision, sec);
177 159
178 - printf("%1$d:%2$.*3$d:%4$.*3$d\n", hour, min, precision, sec);
160 + The format can contain either numbered argument specifications (that is,
161 + %n$ and *m$), or unnumbered argument specifications (that is, % and *),
162 + but normally not both. The only exception to this is that %% can be
163 + mixed with the %n$ form. The results of mixing numbered and unnumbered
164 + argument specifications in a format string are undefined. When numbered
165 + argument specifications are used, specifying the Nth argument requires
166 + that all the leading arguments, from the first to the (N-1)th, are
167 + specified in the format string.
179 168
180 -
181 -
182 - The format can contain either numbered argument specifications (that
183 - is, %n$ and *m$), or unnumbered argument specifications (that is, % and
184 - *), but normally not both. The only exception to this is that %% can be
185 - mixed with the %n$ form. The results of mixing numbered and unnumbered
186 - argument specifications in a format string are undefined. When numbered
187 - argument specifications are used, specifying the Nth argument requires
188 - that all the leading arguments, from the first to the (N-1)th, are
189 - specified in the format string.
190 -
191 169 Flag Characters
192 - The flag characters and their meanings are:
170 + The flag characters and their meanings are:
193 171
194 - '
195 - The integer portion of the result of a decimal conversion (%i,
196 - %d, %u, %f, %F, %g, or %G) will be formatted with thousands'
197 - grouping characters. For other conversions the behavior is
198 - undefined. The non-monetary grouping character is used.
172 + ' The integer portion of the result of a decimal conversion
173 + (%i, %d, %u, %f, %F, %g, or %G) will be formatted with
174 + thousands' grouping characters. For other conversions the
175 + behavior is undefined. The non-monetary grouping character
176 + is used.
199 177
178 + - The result of the conversion will be left-justified within
179 + the field. The conversion will be right-justified if this
180 + flag is not specified.
200 181
201 - -
202 - The result of the conversion will be left-justified within the
203 - field. The conversion will be right-justified if this flag is
204 - not specified.
182 + + The result of a signed conversion will always begin with a
183 + sign (+ or -). The conversion will begin with a sign only
184 + when a negative value is converted if this flag is not
185 + specified.
205 186
187 + " " (space) If the first character of a signed conversion is not a sign
188 + or if a signed conversion results in no characters, a space
189 + will be placed before the result. This means that if the
190 + space and + flags both appear, the space flag will be
191 + ignored.
206 192
207 - +
208 - The result of a signed conversion will always begin with a
209 - sign (+ or -). The conversion will begin with a sign only when
210 - a negative value is converted if this flag is not specified.
193 + # The value is to be converted to an alternate form. For c,
194 + d, i, s, and u conversions, the flag has no effect. For an
195 + o conversion, it increases the precision (if necessary) to
196 + force the first digit of the result to be a zero. For x or
197 + X conversion, a non-zero result will have `0x' (or `0X')
198 + prepended to it. For a, A, e, E, f, F, g, and G
199 + conversions, the result will always contain a radix
200 + character, even if no digits follow the radix character.
201 + Without this flag, the radix character appears in the result
202 + of these conversions only if a digit follows it. For g and
203 + G conversions, trailing zeros will not be removed from the
204 + result as they normally are.
211 205
206 + 0 For d, i, o, u, x, X, a, A, e, E, f, F, g, and G
207 + conversions, leading zeros (following any indication of sign
208 + or base) are used to pad to the field width; no space
209 + padding is performed. If the 0 and - flags both appear, the
210 + 0 flag will be ignored. For d, i, o, u, x, and X
211 + conversions, if a precision is specified, the 0 flag will be
212 + ignored. If the 0 and ' flags both appear, the grouping
213 + characters are inserted before zero padding. For other
214 + conversions, the behavior is undefined.
212 215
213 - space
214 - If the first character of a signed conversion is not a sign or
215 - if a signed conversion results in no characters, a space will
216 - be placed before the result. This means that if the space and
217 - + flags both appear, the space flag will be ignored.
218 -
219 -
220 - #
221 - The value is to be converted to an alternate form. For c, d,
222 - i, s, and u conversions, the flag has no effect. For an o
223 - conversion, it increases the precision (if necessary) to force
224 - the first digit of the result to be a zero. For x or X
225 - conversion, a non-zero result will have 0x (or 0X) prepended
226 - to it. For a, A, e, E, f, F, g, and G conversions, the result
227 - will always contain a radix character, even if no digits
228 - follow the radix character. Without this flag, the radix
229 - character appears in the result of these conversions only if a
230 - digit follows it. For g and G conversions, trailing zeros will
231 - not be removed from the result as they normally are.
232 -
233 -
234 - 0
235 - For d, i, o, u, x, X, a, A, e, E, f, F, g, and G conversions,
236 - leading zeros (following any indication of sign or base) are
237 - used to pad to the field width; no space padding is performed.
238 - If the 0 and - flags both appear, the 0 flag will be ignored.
239 - For d, i, o, u, x, and X conversions, if a precision is
240 - specified, the 0 flag will be ignored. If the 0 and ' flags
241 - both appear, the grouping characters are inserted before zero
242 - padding. For other conversions, the behavior is undefined.
243 -
244 -
245 216 Length Modifiers
246 - The length modifiers and their meanings are:
217 + The length modifiers and their meanings are:
247 218
248 - hh
249 - Specifies that a following d, i, o, u, x, or X
250 - conversion specifier applies to a signed char or
251 - unsigned char argument (the argument will have been
252 - promoted according to the integer promotions, but its
253 - value will be converted to signed char or unsigned char
254 - before printing); or that a following n conversion
255 - specifier applies to a pointer to a signed char
256 - argument.
219 + hh Specifies that a following d, i, o, u, x, or X conversion
220 + specifier applies to a signed char or unsigned char
221 + argument (the argument will have been promoted according to
222 + the integer promotions, but its value will be converted to
223 + signed char or unsigned char before printing); or that a
224 + following n conversion specifier applies to a pointer to a
225 + signed char argument.
257 226
227 + h Specifies that a following d, i, o, u, x, or X conversion
228 + specifier applies to a short or unsigned short argument
229 + (the argument will have been promoted according to the
230 + integer promotions, but its value will be converted to
231 + short or unsigned short before printing); or that a
232 + following n conversion specifier applies to a pointer to a
233 + short argument.
258 234
259 - h
260 - Specifies that a following d, i, o, u, x, or X
261 - conversion specifier applies to a short or unsigned
262 - short argument (the argument will have been promoted
263 - according to the integer promotions, but its value will
264 - be converted to short or unsigned short before
265 - printing); or that a following n conversion specifier
266 - applies to a pointer to a short argument.
235 + l (ell) Specifies that a following d, i, o, u, x, or X conversion
236 + specifier applies to a long or unsigned long argument; that
237 + a following n conversion specifier applies to a pointer to
238 + a long argument; that a following c conversion specifier
239 + applies to a wint_t argument; that a following s conversion
240 + specifier applies to a pointer to a wchar_t argument; or
241 + has no effect on a following a, A, e, E, f, F, g, or G
242 + conversion specifier.
267 243
244 + ll (ell-ell) Specifies that a following d, i, o, u, x, or X conversion
245 + specifier applies to a long long or unsigned long long
246 + argument; or that a following n conversion specifier
247 + applies to a pointer to a long long argument.
268 248
269 - l (ell)
270 - Specifies that a following d, i, o, u, x, or X
271 - conversion specifier applies to a long or unsigned long
272 - argument; that a following n conversion specifier
273 - applies to a pointer to a long argument; that a
274 - following c conversion specifier applies to a wint_t
275 - argument; that a following s conversion specifier
276 - applies to a pointer to a wchar_t argument; or has no
277 - effect on a following a, A, e, E, f, F, g, or G
278 - conversion specifier.
249 + j Specifies that a following d, i, o, u, x, or X conversion
250 + specifier applies to an intmax_t or uintmax_t argument; or
251 + that a following n conversion specifier applies to a
252 + pointer to an intmax_t argument. See NOTES.
279 253
254 + z Specifies that a following d, i, o, u, x, or X conversion
255 + specifier applies to a size_t or the corresponding signed
256 + integer type argument; or that a following n conversion
257 + specifier applies to a pointer to a signed integer type
258 + corresponding to size_t argument.
280 259
281 - ll (ell-ell)
282 - Specifies that a following d, i, o, u, x, or X
283 - conversion specifier applies to a long long or unsigned
284 - long long argument; or that a following n conversion
285 - specifier applies to a pointer to a long long argument.
260 + t Specifies that a following d, i, o, u, x, or X conversion
261 + specifier applies to a ptrdiff_t or the corresponding
262 + unsigned type argument; or that a following n conversion
263 + specifier applies to a pointer to a ptrdiff_t argument.
286 264
265 + L Specifies that a following a, A, e, E, f, F, g, or G
266 + conversion specifier applies to a long double argument.
287 267
288 - j
289 - Specifies that a following d, i, o, u, x, or X
290 - conversion specifier applies to an intmax_t or
291 - uintmax_t argument; or that a following n conversion
292 - specifier applies to a pointer to an intmax_t argument.
293 - See NOTES.
268 + If a length modifier appears with any conversion specifier other than as
269 + specified above, the behavior is undefined.
294 270
295 -
296 - z
297 - Specifies that a following d, i, o, u, x, or X
298 - conversion specifier applies to a size_t or the
299 - corresponding signed integer type argument; or that a
300 - following n conversion specifier applies to a pointer
301 - to a signed integer type corresponding to size_t
302 - argument.
303 -
304 -
305 - t
306 - Specifies that a following d, i, o, u, x, or X
307 - conversion specifier applies to a ptrdiff_t or the
308 - corresponding unsigned type argument; or that a
309 - following n conversion specifier applies to a pointer
310 - to a ptrdiff_t argument.
311 -
312 -
313 - L
314 - Specifies that a following a, A, e, E, f, F, g, or G
315 - conversion specifier applies to a long double argument.
316 -
317 -
318 -
319 - If a length modifier appears with any conversion specifier other than
320 - as specified above, the behavior is undefined.
321 -
322 271 Conversion Specifiers
323 - Each conversion specifier results in fetching zero or more arguments.
324 - The results are undefined if there are insufficient arguments for the
325 - format. If the format is exhausted while arguments remain, the excess
326 - arguments are ignored.
272 + Each conversion specifier results in fetching zero or more arguments.
273 + The results are undefined if there are insufficient arguments for the
274 + format. If the format is exhausted while arguments remain, the excess
275 + arguments are ignored.
327 276
277 + The conversion specifiers and their meanings are:
328 278
329 - The conversion specifiers and their meanings are:
279 + d, i The int argument is converted to a signed decimal in the style
280 + `[-]dddd'. The precision specifies the minimum number of digits to
281 + appear; if the value being converted can be represented in fewer
282 + digits, it will be expanded with leading zeros. The default
283 + precision is 1. The result of converting 0 with an explicit
284 + precision of 0 is no characters.
330 285
331 - d, i
332 - The int argument is converted to a signed decimal in the style
333 - [-]dddd. The precision specifies the minimum number of digits
334 - to appear; if the value being converted can be represented in
335 - fewer digits, it will be expanded with leading zeros. The
336 - default precision is 1. The result of converting 0 with an
337 - explicit precision of 0 is no characters.
286 + o The unsigned int argument is converted to unsigned octal format in
287 + the style `dddd'. The precision specifies the minimum number of
288 + digits to appear; if the value being converted can be represented
289 + in fewer digits, it will be expanded with leading zeros. The
290 + default precision is 1. The result of converting 0 with an
291 + explicit precision of 0 is no characters.
338 292
293 + u The unsigned int argument is converted to unsigned decimal format
294 + in the style `dddd'. The precision specifies the minimum number of
295 + digits to appear; if the value being converted can be represented
296 + in fewer digits, it will be expanded with leading zeros. The
297 + default precision is 1. The result of converting 0 with an
298 + explicit precision of 0 is no characters.
339 299
340 - o
341 - The unsigned int argument is converted to unsigned octal format
342 - in the style dddd. The precision specifies the minimum number
343 - of digits to appear; if the value being converted can be
344 - represented in fewer digits, it will be expanded with leading
345 - zeros. The default precision is 1. The result of converting 0
346 - with an explicit precision of 0 is no characters.
300 + x The unsigned int argument is converted to unsigned hexadecimal
301 + format in the style `dddd'; the letters `abcdef' are used. The
302 + precision specifies the minimum number of digits to appear; if the
303 + value being converted can be represented in fewer digits, it will
304 + be expanded with leading zeros. The default precision is 1. The
305 + result of converting 0 with an explicit precision of 0 is no
306 + characters.
347 307
308 + X Behaves the same as the x conversion specifier except that letters
309 + `ABCDEF' are used instead of `abcdef'.
348 310
349 - u
350 - The unsigned int argument is converted to unsigned decimal
351 - format in the style dddd. The precision specifies the minimum
352 - number of digits to appear; if the value being converted can be
353 - represented in fewer digits, it will be expanded with leading
354 - zeros. The default precision is 1. The result of converting 0
355 - with an explicit precision of 0 is no characters.
311 + f, F The double argument is converted to decimal notation in the style
312 + `[-]ddd.ddd', where the number of digits after the radix character
313 + (see setlocale(3C)) is equal to the precision specification. If
314 + the precision is missing it is taken as 6; if the precision is
315 + explicitly 0 and the # flag is not specified, no radix character
316 + appears. If a radix character appears, at least 1 digit appears
317 + before it. The converted value is rounded to fit the specified
318 + output format according to the prevailing floating point rounding
319 + direction mode. If the conversion is not exact, an inexact
320 + exception is raised.
356 321
322 + For the f specifier, a double argument representing an infinity or
323 + NaN is converted in the style of the e conversion specifier, except
324 + that for an infinite argument, `infinity' or `Infinity' is printed
325 + when the precision is at least 8 and `inf' or `Inf' is printed
326 + otherwise.
357 327
358 - x
359 - The unsigned int argument is converted to unsigned hexadecimal
360 - format in the style dddd; the letters abcdef are used. The
361 - precision specifies the minimum number of digits to appear; if
362 - the value being converted can be represented in fewer digits,
363 - it will be expanded with leading zeros. The default precision
364 - is 1. The result of converting 0 with an explicit precision of
365 - 0 is no characters.
328 + For the F specifier, a double argument representing an infinity or
329 + NaN is converted in the SUSv3 style of the E conversion specifier,
330 + except that for an infinite argument, `INFINITY' is printed when
331 + the precision is at least 8 and `INF' is printed otherwise.
366 332
333 + e, E The double argument is converted to the style `[-]d.ddde+-dd',
334 + where there is one digit before the radix character (which is non-
335 + zero if the argument is non-zero) and the number of digits after it
336 + is equal to the precision. When the precision is missing it is
337 + taken as 6; if the precision is 0 and the # flag is not specified,
338 + no radix character appears. The E conversion specifier will
339 + produce a number with `E' instead of `e' introducing the exponent.
340 + The exponent always contains at least two digits. The converted
341 + value is rounded to fit the specified output format according to
342 + the prevailing floating point rounding direction mode. If the
343 + conversion is not exact, an inexact exception is raised.
367 344
368 - X
369 - Behaves the same as the x conversion specifier except that
370 - letters ABCDEF are used instead of abcdef.
345 + Infinity and NaN values are handled in one of the following ways:
371 346
347 + SUSv3 For the e specifier, a double argument representing an
348 + infinity is printed as `[-]infinity', when the precision
349 + for the conversion is at least 7 and as `[-]inf'
350 + otherwise. A double argument representing a NaN is
351 + printed as `[-]nan'. For the E specifier, `INF',
352 + `INFINITY', and `NAN' are printed instead of `inf',
353 + `infinity', and `nan', respectively. Printing of the sign
354 + follows the rules described above.
372 355
373 - f, F
374 - The double argument is converted to decimal notation in the
375 - style [-]ddd.ddd, where the number of digits after the radix
376 - character (see setlocale(3C)) is equal to the precision
377 - specification. If the precision is missing it is taken as 6; if
378 - the precision is explicitly 0 and the # flag is not specified,
379 - no radix character appears. If a radix character appears, at
380 - least 1 digit appears before it. The converted value is rounded
381 - to fit the specified output format according to the prevailing
382 - floating point rounding direction mode. If the conversion is
383 - not exact, an inexact exception is raised.
356 + Default A double argument representing an infinity is printed as
357 + `[-]Infinity', when the precision for the conversion is at
358 + least 7 and as `[-]Inf' otherwise. A double argument
359 + representing a NaN is printed as `[-]NaN'. Printing of
360 + the sign follows the rules described above.
384 361
385 - For the f specifier, a double argument representing an infinity
386 - or NaN is converted in the style of the e conversion specifier,
387 - except that for an infinite argument, "infinity" or "Infinity"
388 - is printed when the precision is at least 8 and "inf" or "Inf"
389 - is printed otherwise.
362 + g, G The double argument is printed in style f or e (or in style E in
363 + the case of a G conversion specifier), with the precision
364 + specifying the number of significant digits. If an explicit
365 + precision is 0, it is taken as 1. The style used depends on the
366 + value converted: style e (or E) will be used only if the exponent
367 + resulting from the conversion is less than -4 or greater than or
368 + equal to the precision. Trailing zeros are removed from the
369 + fractional part of the result. A radix character appears only if
370 + it is followed by a digit.
390 371
391 - For the F specifier, a double argument representing an infinity
392 - or NaN is converted in the SUSv3 style of the E conversion
393 - specifier, except that for an infinite argument, "INFINITY" is
394 - printed when the precision is at least 8 and or "INF" is
395 - printed otherwise.
372 + A double argument representing an infinity or NaN is converted in
373 + the style of the e or E conversion specifier, except that for an
374 + infinite argument, `infinity', `INFINITY', or `Infinity' is printed
375 + when the precision is at least 8 and `inf', `INF', or `Inf' is
376 + printed otherwise.
396 377
378 + a, A A double argument representing a floating-point number is converted
379 + in the style `[-]0xh.hhhhp+-d', where the single hexadecimal digit
380 + preceding the radix point is 0 if the value converted is zero and 1
381 + otherwise and the number of hexadecimal digits after it is equal to
382 + the precision; if the precision is missing, the number of digits
383 + printed after the radix point is 13 for the conversion of a double
384 + value, 16 for the conversion of a long double value on x86, and 28
385 + for the conversion of a long double value on SPARC; if the
386 + precision is zero and the # flag is not specified, no decimal-point
387 + character will appear. The letters `abcdef' are used for a
388 + conversion and the letters `ABCDEF' for A conversion. The A
389 + conversion specifier produces a number with `X' and `P' instead of
390 + `x' and `p'. The exponent will always contain at least one digit,
391 + and only as many more digits as necessary to represent the decimal
392 + exponent of 2. If the value is zero, the exponent is zero.
397 393
398 - e, E
399 - The double argument is converted to the style [-]d.ddde+-dd,
400 - where there is one digit before the radix character (which is
401 - non-zero if the argument is non-zero) and the number of digits
402 - after it is equal to the precision. When the precision is
403 - missing it is taken as 6; if the precision is 0 and the # flag
404 - is not specified, no radix character appears. The E conversion
405 - specifier will produce a number with E instead of e introducing
406 - the exponent. The exponent always contains at least two digits.
407 - The converted value is rounded to fit the specified output
408 - format according to the prevailing floating point rounding
409 - direction mode. If the conversion is not exact, an inexact
410 - exception is raised.
394 + The converted value is rounded to fit the specified output format
395 + according to the prevailing floating point rounding direction mode.
396 + If the conversion is not exact, an inexact exception is raised.
411 397
412 - Infinity and NaN values are handled in one of the following
413 - ways:
398 + A double argument representing an infinity or NaN is converted in
399 + the SUSv3 style of an e or E conversion specifier.
414 400
415 - SUSv3
416 - For the e specifier, a double argument representing
417 - an infinity is printed as "[-]infinity", when the
418 - precision for the conversion is at least 7 and as
419 - "[-]inf" otherwise. A double argument representing a
420 - NaN is printed as "[-]nan". For the E specifier,
421 - "INF", "INFINITY", and "NAN" are printed instead of
422 - "inf", "infinity", and "nan", respectively. Printing
423 - of the sign follows the rules described above.
401 + c The int argument is converted to an unsigned char, and the
402 + resulting byte is printed.
424 403
404 + If an l (ell) qualifier is present, the wint_t argument is
405 + converted as if by an ls conversion specification with no precision
406 + and an argument that points to a two-element array of type wchar_t,
407 + the first element of which contains the wint_t argument to the ls
408 + conversion specification and the second element contains a null
409 + wide-character.
425 410
426 - Default
427 - A double argument representing an infinity is
428 - printed as "[-]Infinity", when the precision for the
429 - conversion is at least 7 and as "[-]Inf" otherwise.
430 - A double argument representing a NaN is printed as
431 - "[-]NaN". Printing of the sign follows the rules
432 - described above.
411 + C Same as lc.
433 412
413 + wc The int argument is converted to a wide character (wchar_t), and
414 + the resulting wide character is printed.
434 415
416 + s The argument must be a pointer to an array of char. Bytes from the
417 + array are written up to (but not including) any terminating null
418 + byte. If a precision is specified, a standard-conforming
419 + application (see standards(5)) will write only the number of bytes
420 + specified by precision; an application that is not standard-
421 + conforming will write only the portion of the string that will
422 + display in the number of columns of screen display specified by
423 + precision. If the precision is not specified, it is taken to be
424 + infinite, so all bytes up to the first null byte are printed. An
425 + argument with a null value will yield undefined results.
435 426
436 - g, G
437 - The double argument is printed in style f or e (or in style E
438 - in the case of a G conversion specifier), with the precision
439 - specifying the number of significant digits. If an explicit
440 - precision is 0, it is taken as 1. The style used depends on the
441 - value converted: style e (or E) will be used only if the
442 - exponent resulting from the conversion is less than -4 or
443 - greater than or equal to the precision. Trailing zeros are
444 - removed from the fractional part of the result. A radix
445 - character appears only if it is followed by a digit.
427 + If an l (ell) qualifier is present, the argument must be a pointer
428 + to an array of type wchar_t. Wide-characters from the array are
429 + converted to characters (each as if by a call to the wcrtomb(3C)
430 + function, with the conversion state described by an mbstate_t
431 + object initialized to zero before the first wide-character is
432 + converted) up to and including a terminating null wide-character.
433 + The resulting characters are written up to (but not including) the
434 + terminating null character (byte). If no precision is specified,
435 + the array must contain a null wide-character. If a precision is
436 + specified, no more than that many characters (bytes) are written
437 + (including shift sequences, if any), and the array must contain a
438 + null wide-character if, to equal the character sequence length
439 + given by the precision, the function would need to access a wide-
440 + character one past the end of the array. In no case is a partial
441 + character written.
446 442
447 - A double argument representing an infinity or NaN is converted
448 - in the style of the e or E conversion specifier, except that
449 - for an infinite argument, "infinity", "INFINITY", or "Infinity"
450 - is printed when the precision is at least 8 and "inf", "INF",
451 - or "Inf" is printed otherwise.
443 + S Same as ls.
452 444
445 + ws The argument must be a pointer to an array of wchar_t. Bytes from
446 + the array are written up to (but not including) any terminating
447 + null character. If the precision is specified, only that portion
448 + of the wide-character array that will display in the number of
449 + columns of screen display specified by precision will be written.
450 + If the precision is not specified, it is taken to be infinite, so
451 + all wide characters up to the first null character are printed. An
452 + argument with a null value will yield undefined results.
453 453
454 - a, A
455 - A double argument representing a floating-point number is
456 - converted in the style "[-]0xh.hhhhp+-d", where the single
457 - hexadecimal digit preceding the radix point is 0 if the value
458 - converted is zero and 1 otherwise and the number of hexadecimal
459 - digits after it is equal to the precision; if the precision is
460 - missing, the number of digits printed after the radix point is
461 - 13 for the conversion of a double value, 16 for the conversion
462 - of a long double value on x86, and 28 for the conversion of a
463 - long double value on SPARC; if the precision is zero and the
464 - '#' flag is not specified, no decimal-point character will
465 - appear. The letters "abcdef" are used for a conversion and the
466 - letters "ABCDEF" for A conversion. The A conversion specifier
467 - produces a number with 'X' and 'P' instead of 'x' and 'p'. The
468 - exponent will always contain at least one digit, and only as
469 - many more digits as necessary to represent the decimal exponent
470 - of 2. If the value is zero, the exponent is zero.
454 + p The argument must be a pointer to void. The value of the pointer
455 + is converted to a set of sequences of printable characters, which
456 + should be the same as the set of sequences that are matched by the
457 + %p conversion of the scanf(3C) function.
471 458
472 - The converted value is rounded to fit the specified output
473 - format according to the prevailing floating point rounding
474 - direction mode. If the conversion is not exact, an inexact
475 - exception is raised.
459 + n The argument must be a pointer to an integer into which is written
460 + the number of bytes written to the output standard I/O stream so
461 + far by this call to one of the printf() functions. No argument is
462 + converted.
476 463
477 - A double argument representing an infinity or NaN is converted
478 - in the SUSv3 style of an e or E conversion specifier.
464 + % Print a `%'; no argument is converted. The entire conversion
465 + specification must be %%.
479 466
467 + If a conversion specification does not match one of the above forms, the
468 + behavior is undefined.
480 469
481 - c
482 - The int argument is converted to an unsigned char, and the
483 - resulting byte is printed.
470 + In no case does a non-existent or small field width cause truncation of a
471 + field; if the result of a conversion is wider than the field width, the
472 + field is simply expanded to contain the conversion result. Characters
473 + generated by printf() and fprintf() are printed as if the putc(3C)
474 + function had been called.
484 475
485 - If an l (ell) qualifier is present, the wint_t argument is
486 - converted as if by an ls conversion specification with no
487 - precision and an argument that points to a two-element array of
488 - type wchar_t, the first element of which contains the wint_t
489 - argument to the ls conversion specification and the second
490 - element contains a null wide-character.
476 + The st_ctime and st_mtime fields of the file will be marked for update
477 + between the call to a successful execution of printf() or fprintf() and
478 + the next successful completion of a call to fflush(3C) or fclose(3C) on
479 + the same stream or a call to exit(3C) or abort(3C).
491 480
492 -
493 - C
494 - Same as lc.
495 -
496 -
497 - wc
498 - The int argument is converted to a wide character (wchar_t),
499 - and the resulting wide character is printed.
500 -
501 -
502 - s
503 - The argument must be a pointer to an array of char. Bytes from
504 - the array are written up to (but not including) any terminating
505 - null byte. If a precision is specified, a standard-conforming
506 - application (see standards(5)) will write only the number of
507 - bytes specified by precision; an application that is not
508 - standard-conforming will write only the portion of the string
509 - that will display in the number of columns of screen display
510 - specified by precision. If the precision is not specified, it
511 - is taken to be infinite, so all bytes up to the first null byte
512 - are printed. An argument with a null value will yield undefined
513 - results.
514 -
515 - If an l (ell) qualifier is present, the argument must be a
516 - pointer to an array of type wchar_t. Wide-characters from the
517 - array are converted to characters (each as if by a call to the
518 - wcrtomb(3C) function, with the conversion state described by an
519 - mbstate_t object initialized to zero before the first wide-
520 - character is converted) up to and including a terminating null
521 - wide-character. The resulting characters are written up to (but
522 - not including) the terminating null character (byte). If no
523 - precision is specified, the array must contain a null wide-
524 - character. If a precision is specified, no more than that many
525 - characters (bytes) are written (including shift sequences, if
526 - any), and the array must contain a null wide-character if, to
527 - equal the character sequence length given by the precision, the
528 - function would need to access a wide-character one past the end
529 - of the array. In no case is a partial character written.
530 -
531 -
532 - S
533 - Same as ls.
534 -
535 -
536 - ws
537 - The argument must be a pointer to an array of wchar_t. Bytes
538 - from the array are written up to (but not including) any
539 - terminating null character. If the precision is specified, only
540 - that portion of the wide-character array that will display in
541 - the number of columns of screen display specified by precision
542 - will be written. If the precision is not specified, it is taken
543 - to be infinite, so all wide characters up to the first null
544 - character are printed. An argument with a null value will yield
545 - undefined results.
546 -
547 -
548 - p
549 - The argument must be a pointer to void. The value of the
550 - pointer is converted to a set of sequences of printable
551 - characters, which should be the same as the set of sequences
552 - that are matched by the %p conversion of the scanf(3C)
553 - function.
554 -
555 -
556 - n
557 - The argument must be a pointer to an integer into which is
558 - written the number of bytes written to the output standard I/O
559 - stream so far by this call to one of the printf() functions. No
560 - argument is converted.
561 -
562 -
563 - %
564 - Print a %; no argument is converted. The entire conversion
565 - specification must be %%.
566 -
567 -
568 -
569 - If a conversion specification does not match one of the above forms,
570 - the behavior is undefined.
571 -
572 -
573 - In no case does a non-existent or small field width cause truncation of
574 - a field; if the result of a conversion is wider than the field width,
575 - the field is simply expanded to contain the conversion result.
576 - Characters generated by printf() and fprintf() are printed as if the
577 - putc(3C) function had been called.
578 -
579 -
580 - The st_ctime and st_mtime fields of the file will be marked for update
581 - between the call to a successful execution of printf() or fprintf() and
582 - the next successful completion of a call to fflush(3C) or fclose(3C) on
583 - the same stream or a call to exit(3C) or abort(3C).
584 -
585 481 RETURN VALUES
586 - The printf(), fprintf(), sprintf(), and asprintf() functions return the
587 - number of bytes transmitted (excluding the terminating null byte in the
588 - case of sprintf() and asprintf()).
482 + The printf(), fprintf(), sprintf(), and asprintf() functions return the
483 + number of bytes transmitted (excluding the terminating null byte in the
484 + case of sprintf() and asprintf()).
589 485
486 + The snprintf() function returns the number of bytes that would have been
487 + written to s if n had been sufficiently large (excluding the terminating
488 + null byte). If the value of n is 0 on a call to snprintf(), s can be a
489 + null pointer and the number of bytes that would have been written if n
490 + had been sufficiently large (excluding the terminating null byte) is
491 + returned.
590 492
591 - The snprintf() function returns the number of bytes that would have
592 - been written to s if n had been sufficiently large (excluding the
593 - terminating null byte.) If the value of n is 0 on a call to snprintf(),
594 - s can be a null pointer and the number of bytes that would have been
595 - written if n had been sufficiently large (excluding the terminating
596 - null byte) is returned.
493 + Each function returns a negative value if an output error was
494 + encountered.
597 495
598 -
599 - Each function returns a negative value if an output error was
600 - encountered.
601 -
602 -ERRORS
603 - For the conditions under which printf() and fprintf() will fail and may
604 - fail, refer to fputc(3C) or fputwc(3C).
605 -
606 -
607 - The snprintf() function will fail if:
608 -
609 - EOVERFLOW
610 - The value of n is greater than INT_MAX or the number of
611 - bytes needed to hold the output excluding the terminating
612 - null is greater than INT_MAX.
613 -
614 -
615 -
616 - The printf(), fprintf(), sprintf(), and snprintf() functions may fail
617 - if:
618 -
619 - EILSEQ
620 - A wide-character code that does not correspond to a valid
621 - character has been detected.
622 -
623 -
624 - EINVAL
625 - There are insufficient arguments.
626 -
627 -
628 -
629 - The printf(), fprintf(), and asprintf() functions may fail due to an
630 - underlying malloc(3C) failure if:
631 -
632 - EAGAIN
633 - Storage space is temporarily unavailable.
634 -
635 -
636 - ENOMEM
637 - Insufficient storage space is available.
638 -
639 -
640 496 USAGE
641 - If the application calling the printf() functions has any objects of
642 - type wint_t or wchar_t, it must also include the header <wchar.h> to
643 - have these objects defined.
497 + If the application calling the printf() functions has any objects of type
498 + wint_t or wchar_t, it must also include the header <wchar.h> to have
499 + these objects defined.
644 500
645 501 Escape Character Sequences
646 - It is common to use the following escape sequences built into the C
647 - language when entering format strings for the printf() functions, but
648 - these sequences are processed by the C compiler, not by the printf()
649 - function.
502 + It is common to use the following escape sequences built into the C
503 + language when entering format strings for the printf() functions, but
504 + these sequences are processed by the C compiler, not by the printf()
505 + function.
650 506
651 - \a
652 - Alert. Ring the bell.
507 + \a Alert. Ring the bell.
653 508
509 + \b Backspace. Move the printing position to one character before the
510 + current position, unless the current position is the start of a line.
654 511
655 - \b
656 - Backspace. Move the printing position to one character before
657 - the current position, unless the current position is the start
658 - of a line.
512 + \f Form feed. Move the printing position to the initial printing
513 + position of the next logical page.
659 514
515 + \n Newline. Move the printing position to the start of the next line.
660 516
661 - \f
662 - Form feed. Move the printing position to the initial printing
663 - position of the next logical page.
517 + \r Carriage return. Move the printing position to the start of the
518 + current line.
664 519
520 + \t Horizontal tab. Move the printing position to the next
521 + implementation-defined horizontal tab position on the current line.
665 522
666 - \n
667 - Newline. Move the printing position to the start of the next
668 - line.
523 + \v Vertical tab. Move the printing position to the start of the next
524 + implementation-defined vertical tab position.
669 525
526 + In addition, the C language supports character sequences of the form
527 + \octal-number and \hex-number which translates into the character
528 + represented by the octal or hexadecimal number. For example, if ASCII
529 + representations are being used, the letter 'a' may be written as `\141'
530 + and 'Z' as `\132'. This syntax is most frequently used to represent the
531 + null character as `\0'. This is exactly equivalent to the numeric
532 + constant zero (0). Note that the octal number does not include the zero
533 + prefix as it would for a normal octal constant. To specify a hexadecimal
534 + number, omit the zero so that the prefix is an 'x' (uppercase 'X' is not
535 + allowed in this context). Support for hexadecimal sequences is an ANSI
536 + extension. See standards(5).
670 537
671 - \r
672 - Carriage return. Move the printing position to the start of the
673 - current line.
674 -
675 -
676 - \t
677 - Horizontal tab. Move the printing position to the next
678 - implementation-defined horizontal tab position on the current
679 - line.
680 -
681 -
682 - \v
683 - Vertical tab. Move the printing position to the start of the
684 - next implementation-defined vertical tab position.
685 -
686 -
687 -
688 - In addition, the C language supports character sequences of the form
689 -
690 -
691 - \octal-number
692 -
693 -
694 - and
695 -
696 -
697 - \hex-number
698 -
699 -
700 - which translates into the character represented by the octal or
701 - hexadecimal number. For example, if ASCII representations are being
702 - used, the letter 'a' may be written as '\141' and 'Z' as '\132'. This
703 - syntax is most frequently used to represent the null character as '\0'.
704 - This is exactly equivalent to the numeric constant zero (0). Note that
705 - the octal number does not include the zero prefix as it would for a
706 - normal octal constant. To specify a hexadecimal number, omit the zero
707 - so that the prefix is an 'x' (uppercase 'X' is not allowed in this
708 - context). Support for hexadecimal sequences is an ANSI extension. See
709 - standards(5).
710 -
711 538 EXAMPLES
712 - Example 1 To print the language-independent date and time format, the
713 - following statement could be used:
539 + Example 1 To print the language-independent date and time format, the
540 + following statement could be used:
714 541
715 - printf (format, weekday, month, day, hour, min);
542 + printf (format, weekday, month, day, hour, min);
716 543
544 + For American usage, format could be a pointer to the string:
717 545
546 + "%s, %s %d, %d:%.2d\n"
718 547
719 - For American usage, format could be a pointer to the string:
548 + producing the message:
720 549
550 + Sunday, July 3, 10:02
721 551
722 - "%s, %s %d, %d:%.2d\n"
552 + whereas for German usage, format could be a pointer to the string:
723 553
554 + "%1$s, %3$d. %2$s, %4$d:%5$.2d\n"
724 555
556 + producing the message:
725 557
726 - producing the message:
558 + Sonntag, 3. Juli, 10:02
727 559
560 + Example 2 To print a date and time in the form `Sunday, July 3, 10:02',
561 + where weekday and month are pointers to null-terminated strings:
728 562
729 - Sunday, July 3, 10:02
563 + printf("%s, %s %i, %d:%.2d", weekday, month, day, hour, min);
730 564
565 + Example 3 To print pi to 5 decimal places:
731 566
567 + printf("pi = %.5f", 4 * atan(1.0));
732 568
733 - whereas for German usage, format could be a pointer to the string:
569 + Example 4 The following example applies only to applications that are not
570 + standard-conforming. To print a list of names in columns which are 20
571 + characters wide:
734 572
573 + printf("%20s%20s%20s", lastname, firstname, middlename);
735 574
736 - "%1$s, %3$d. %2$s, %4$d:%5$.2d\n"
575 +ERRORS
576 + For the conditions under which printf() and fprintf() will fail and may
577 + fail, refer to fputc(3C) or fputwc(3C).
737 578
579 + The snprintf() function will fail if:
738 580
581 + EOVERFLOW The value of n is greater than INT_MAX or the number
582 + of bytes needed to hold the output excluding the
583 + terminating null is greater than INT_MAX.
739 584
740 - producing the message:
585 + The printf(), fprintf(), sprintf(), and snprintf() functions may fail if:
741 586
587 + EILSEQ A wide-character code that does not correspond to a
588 + valid character has been detected.
742 589
743 - Sonntag, 3. Juli, 10:02
590 + EINVAL There are insufficient arguments.
744 591
592 + The printf(), fprintf(), and asprintf() functions may fail due to an
593 + underlying malloc(3C) failure if:
745 594
746 - Example 2 To print a date and time in the form Sunday, July 3, 10:02,
747 - where weekday and month are pointers to null-terminated strings:
595 + EAGAIN Storage space is temporarily unavailable.
748 596
749 - printf("%s, %s %i, %d:%.2d", weekday, month, day, hour, min);
597 + ENOMEM Insufficient storage space is available.
750 598
599 +CODE SET INDEPENDENCE
600 + Enabled
751 601
752 - Example 3 To print pi to 5 decimal places:
602 +INTERFACE STABILITY
603 + Committed
753 604
754 - printf("pi = %.5f", 4 * atan(1.0));
605 +MT-LEVEL
606 + All of these functions can be used safely in multithreaded applications,
607 + as long as setlocale(3C) is not being called to change the locale. The
608 + sprintf() and snprintf() functions are Async-Signal-Safe.
755 609
756 -
757 - Default
758 - Example 4 The following example applies only to applications that are
759 - not standard-conforming. To print a list of names in columns which are
760 - 20 characters wide:
761 -
762 - printf("%20s%20s%20s", lastname, firstname, middlename);
763 -
764 -
765 -ATTRIBUTES
766 - See attributes(5) for descriptions of the following attributes:
767 -
768 -
769 -
770 -
771 - +--------------------+-----------------+
772 - |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
773 - +--------------------+-----------------+
774 - |CSI | Enabled |
775 - +--------------------+-----------------+
776 - |Interface Stability | Committed |
777 - +--------------------+-----------------+
778 - |MT-Level | See below. |
779 - +--------------------+-----------------+
780 - |Standard | See below. |
781 - +--------------------+-----------------+
782 -
783 -
784 - All of these functions can be used safely in multithreaded
785 - applications, as long as setlocale(3C) is not being called to change
786 - the locale. The sprintf() and snprintf() functions are Async-Signal-
787 - Safe.
788 -
789 -
790 - See standards(5) for the standards conformance of printf(), fprintf(),
791 - sprintf(), and snprintf(). The asprintf() function is modeled on the
792 - one that appears in the FreeBSD, NetBSD, and GNU C libraries.
793 -
794 610 SEE ALSO
795 - exit(2), lseek(2), write(2), abort(3C), ecvt(3C), exit(3C), fclose(3C),
796 - fflush(3C), fputwc(3C), free(3C), malloc(3C), putc(3C), scanf(3C),
797 - setlocale(3C), stdio(3C), vprintf(3C), wcstombs(3C), wctomb(3C),
798 - attributes(5), environ(5), standards(5)
611 + exit(2), lseek(2), write(2), abort(3C), ecvt(3C), exit(3C), fclose(3C),
612 + fflush(3C), fputwc(3C), free(3C), malloc(3C), putc(3C), scanf(3C),
613 + setlocale(3C), stdio(3C), vprintf(3C), wcstombs(3C), wctomb(3C),
614 + attributes(5), environ(5), standards(5)
799 615
616 +STANDARDS
617 + See standards(5) for the standards conformance of printf(), fprintf(),
618 + sprintf(), and snprintf(). The asprintf() function is modeled on the one
619 + that appears in the FreeBSD, NetBSD, and GNU C libraries.
620 +
800 621 NOTES
801 - If the j length modifier is used, 32-bit applications that were
802 - compiled using c89 on releases prior to Solaris 10 will experience
803 - undefined behavior.
622 + If the j length modifier is used, 32-bit applications that were compiled
623 + using c89 on releases prior to Solaris 10 will experience undefined
624 + behavior.
804 625
626 + The snprintf() return value when n is 0 was changed in the Solaris 10
627 + release. The change was based on the SUSv3 specification. The previous
628 + behavior was based on the initial SUSv2 specification, where snprintf()
629 + when n is 0 returns an unspecified value less than 1.
805 630
806 - The snprintf() return value when n = 0 was changed in the Solaris 10
807 - release. The change was based on the SUSv3 specification. The previous
808 - behavior was based on the initial SUSv2 specification, where snprintf()
809 - when n = 0 returns an unspecified value less than 1.
810 -
811 -
812 -
813 - January 7, 2009 PRINTF(3C)
631 +illumos July 10, 2020 illumos
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX