]>
Commit | Line | Data |
---|---|---|
5b2abdfb A |
1 | .\" Copyright (c) 1990, 1991, 1993 |
2 | .\" The Regents of the University of California. All rights reserved. | |
3 | .\" | |
4 | .\" This code is derived from software contributed to Berkeley by | |
5 | .\" Chris Torek and the American National Standards Committee X3, | |
6 | .\" on Information Processing Systems. | |
7 | .\" | |
8 | .\" Redistribution and use in source and binary forms, with or without | |
9 | .\" modification, are permitted provided that the following conditions | |
10 | .\" are met: | |
11 | .\" 1. Redistributions of source code must retain the above copyright | |
12 | .\" notice, this list of conditions and the following disclaimer. | |
13 | .\" 2. Redistributions in binary form must reproduce the above copyright | |
14 | .\" notice, this list of conditions and the following disclaimer in the | |
15 | .\" documentation and/or other materials provided with the distribution. | |
5b2abdfb A |
16 | .\" 4. Neither the name of the University nor the names of its contributors |
17 | .\" may be used to endorse or promote products derived from this software | |
18 | .\" without specific prior written permission. | |
19 | .\" | |
20 | .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
21 | .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
22 | .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
23 | .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
24 | .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
25 | .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
26 | .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
27 | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
28 | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
29 | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
30 | .\" SUCH DAMAGE. | |
31 | .\" | |
32 | .\" @(#)printf.3 8.1 (Berkeley) 6/4/93 | |
9385eb3d | 33 | .\" FreeBSD: src/lib/libc/stdio/printf.3,v 1.47 2002/09/06 11:23:55 tjr Exp |
974e3884 | 34 | .\" $FreeBSD$ |
5b2abdfb | 35 | .\" |
9385eb3d A |
36 | .Dd July 5, 2003 |
37 | .Dt WPRINTF 3 | |
5b2abdfb A |
38 | .Os |
39 | .Sh NAME | |
974e3884 A |
40 | .Nm wprintf , fwprintf , swprintf , |
41 | .Nm vwprintf , vfwprintf , vswprintf | |
9385eb3d | 42 | .Nd formatted wide character output conversion |
5b2abdfb A |
43 | .Sh LIBRARY |
44 | .Lb libc | |
45 | .Sh SYNOPSIS | |
46 | .In stdio.h | |
9385eb3d | 47 | .In wchar.h |
5b2abdfb | 48 | .Ft int |
974e3884 | 49 | .Fn fwprintf "FILE * restrict stream" "const wchar_t * restrict format" ... |
5b2abdfb | 50 | .Ft int |
974e3884 | 51 | .Fn swprintf "wchar_t * restrict ws" "size_t n" "const wchar_t * restrict format" ... |
5b2abdfb | 52 | .Ft int |
974e3884 | 53 | .Fn wprintf "const wchar_t * restrict format" ... |
5b2abdfb A |
54 | .In stdarg.h |
55 | .Ft int | |
974e3884 | 56 | .Fn vfwprintf "FILE * restrict stream" "const wchar_t * restrict" "va_list ap" |
5b2abdfb | 57 | .Ft int |
974e3884 | 58 | .Fn vswprintf "wchar_t * restrict ws" "size_t n" "const wchar_t *restrict format" "va_list ap" |
5b2abdfb | 59 | .Ft int |
974e3884 | 60 | .Fn vwprintf "const wchar_t * restrict format" "va_list ap" |
5b2abdfb A |
61 | .Sh DESCRIPTION |
62 | The | |
9385eb3d | 63 | .Fn wprintf |
5b2abdfb | 64 | family of functions produces output according to a |
974e3884 | 65 | .Fa format |
5b2abdfb | 66 | as described below. |
9385eb3d A |
67 | The |
68 | .Fn wprintf | |
5b2abdfb | 69 | and |
9385eb3d A |
70 | .Fn vwprintf |
71 | functions | |
5b2abdfb | 72 | write output to |
9385eb3d | 73 | .Dv stdout , |
5b2abdfb | 74 | the standard output stream; |
9385eb3d | 75 | .Fn fwprintf |
5b2abdfb | 76 | and |
9385eb3d | 77 | .Fn vfwprintf |
5b2abdfb A |
78 | write output to the given output |
79 | .Fa stream ; | |
9385eb3d | 80 | .Fn swprintf |
5b2abdfb | 81 | and |
9385eb3d A |
82 | .Fn vswprintf |
83 | write to the wide character string | |
84 | .Fa ws . | |
5b2abdfb | 85 | .Pp |
ad3c9f2a A |
86 | Extended locale versions of these functions are documented in |
87 | .Xr wprintf_l 3 . | |
88 | See | |
89 | .Xr xlocale 3 | |
90 | for more information. | |
91 | .Pp | |
5b2abdfb A |
92 | These functions write the output under the control of a |
93 | .Fa format | |
94 | string that specifies how subsequent arguments | |
95 | (or arguments accessed via the variable-length argument facilities of | |
96 | .Xr stdarg 3 ) | |
97 | are converted for output. | |
98 | .Pp | |
99 | These functions return the number of characters printed | |
100 | (not including the trailing | |
ad3c9f2a | 101 | .Ql \e0 , |
9385eb3d | 102 | used to end output to strings). |
5b2abdfb | 103 | .Pp |
9385eb3d A |
104 | The |
105 | .Fn swprintf | |
5b2abdfb | 106 | and |
9385eb3d | 107 | .Fn vswprintf |
974e3884 A |
108 | functions return the number of characters written (not including the terminating |
109 | null wide character). | |
110 | These functions will fail (returning a negative value and setting | |
111 | .Va errno | |
112 | appropriately) if | |
9385eb3d | 113 | .Fa n |
974e3884 A |
114 | or more wide characters were requested to be written. |
115 | .Pp | |
116 | The other functions return the number of wide characters printed on success, or | |
117 | a negative value on faiure, setting | |
118 | .Va errno | |
119 | to indicate the error. | |
5b2abdfb A |
120 | .Pp |
121 | The format string is composed of zero or more directives: | |
122 | ordinary | |
5b2abdfb A |
123 | characters (not |
124 | .Cm % ) , | |
125 | which are copied unchanged to the output stream; | |
126 | and conversion specifications, each of which results | |
127 | in fetching zero or more subsequent arguments. | |
128 | Each conversion specification is introduced by | |
129 | the | |
130 | .Cm % | |
131 | character. | |
132 | The arguments must correspond properly (after type promotion) | |
133 | with the conversion specifier. | |
134 | After the | |
135 | .Cm % , | |
136 | the following appear in sequence: | |
137 | .Bl -bullet | |
138 | .It | |
139 | An optional field, consisting of a decimal digit string followed by a | |
140 | .Cm $ , | |
141 | specifying the next argument to access. | |
142 | If this field is not provided, the argument following the last | |
143 | argument accessed will be used. | |
144 | Arguments are numbered starting at | |
145 | .Cm 1 . | |
146 | If unaccessed arguments in the format string are interspersed with ones that | |
147 | are accessed the results will be indeterminate. | |
148 | .It | |
149 | Zero or more of the following flags: | |
9385eb3d A |
150 | .Bl -tag -width ".So \ Sc (space)" |
151 | .It Sq Cm # | |
152 | The value should be converted to an | |
5b2abdfb A |
153 | .Dq alternate form . |
154 | For | |
155 | .Cm c , d , i , n , p , s , | |
156 | and | |
157 | .Cm u | |
158 | conversions, this option has no effect. | |
159 | For | |
160 | .Cm o | |
161 | conversions, the precision of the number is increased to force the first | |
162 | character of the output string to a zero (except if a zero value is printed | |
163 | with an explicit precision of zero). | |
164 | For | |
165 | .Cm x | |
166 | and | |
167 | .Cm X | |
168 | conversions, a non-zero result has the string | |
169 | .Ql 0x | |
170 | (or | |
171 | .Ql 0X | |
172 | for | |
173 | .Cm X | |
174 | conversions) prepended to it. | |
175 | For | |
9385eb3d | 176 | .Cm a , A , e , E , f , F , g , |
5b2abdfb A |
177 | and |
178 | .Cm G | |
179 | conversions, the result will always contain a decimal point, even if no | |
180 | digits follow it (normally, a decimal point appears in the results of | |
181 | those conversions only if a digit follows). | |
182 | For | |
183 | .Cm g | |
184 | and | |
185 | .Cm G | |
186 | conversions, trailing zeros are not removed from the result as they | |
187 | would otherwise be. | |
9385eb3d A |
188 | .It So Cm 0 Sc (zero) |
189 | Zero padding. | |
5b2abdfb A |
190 | For all conversions except |
191 | .Cm n , | |
192 | the converted value is padded on the left with zeros rather than blanks. | |
193 | If a precision is given with a numeric conversion | |
194 | .Cm ( d , i , o , u , i , x , | |
195 | and | |
196 | .Cm X ) , | |
197 | the | |
198 | .Cm 0 | |
199 | flag is ignored. | |
9385eb3d A |
200 | .It Sq Cm \- |
201 | A negative field width flag; | |
202 | the converted value is to be left adjusted on the field boundary. | |
5b2abdfb A |
203 | Except for |
204 | .Cm n | |
205 | conversions, the converted value is padded on the right with blanks, | |
206 | rather than on the left with blanks or zeros. | |
207 | A | |
208 | .Cm \- | |
209 | overrides a | |
210 | .Cm 0 | |
211 | if both are given. | |
9385eb3d A |
212 | .It So "\ " Sc (space) |
213 | A blank should be left before a positive number | |
5b2abdfb | 214 | produced by a signed conversion |
9385eb3d | 215 | .Cm ( a , A , d , e , E , f , F , g , G , |
5b2abdfb A |
216 | or |
217 | .Cm i ) . | |
9385eb3d A |
218 | .It Sq Cm + |
219 | A sign must always be placed before a | |
5b2abdfb A |
220 | number produced by a signed conversion. |
221 | A | |
222 | .Cm + | |
223 | overrides a space if both are used. | |
9385eb3d A |
224 | .It Sq Cm ' |
225 | Decimal conversions | |
226 | .Cm ( d , u , | |
227 | or | |
228 | .Cm i ) | |
229 | or the integral portion of a floating point conversion | |
230 | .Cm ( f | |
231 | or | |
232 | .Cm F ) | |
233 | should be grouped and separated by thousands using | |
234 | the non-monetary separator returned by | |
235 | .Xr localeconv 3 . | |
5b2abdfb A |
236 | .El |
237 | .It | |
238 | An optional decimal digit string specifying a minimum field width. | |
239 | If the converted value has fewer characters than the field width, it will | |
240 | be padded with spaces on the left (or right, if the left-adjustment | |
241 | flag has been given) to fill out | |
242 | the field width. | |
243 | .It | |
244 | An optional precision, in the form of a period | |
245 | .Cm \&. | |
246 | followed by an | |
247 | optional digit string. | |
248 | If the digit string is omitted, the precision is taken as zero. | |
249 | This gives the minimum number of digits to appear for | |
250 | .Cm d , i , o , u , x , | |
251 | and | |
252 | .Cm X | |
253 | conversions, the number of digits to appear after the decimal-point for | |
9385eb3d | 254 | .Cm a , A , e , E , f , |
5b2abdfb | 255 | and |
9385eb3d | 256 | .Cm F |
5b2abdfb A |
257 | conversions, the maximum number of significant digits for |
258 | .Cm g | |
259 | and | |
260 | .Cm G | |
261 | conversions, or the maximum number of characters to be printed from a | |
262 | string for | |
263 | .Cm s | |
264 | conversions. | |
265 | .It | |
9385eb3d A |
266 | An optional length modifier, that specifies the size of the argument. |
267 | The following length modifiers are valid for the | |
268 | .Cm d , i , n , o , u , x , | |
5b2abdfb A |
269 | or |
270 | .Cm X | |
9385eb3d A |
271 | conversion: |
272 | .Bl -column ".Cm q Em (deprecated)" ".Vt signed char" ".Vt unsigned long long" ".Vt long long *" | |
273 | .It Sy Modifier Ta Cm d , i Ta Cm o , u , x , X Ta Cm n | |
274 | .It Cm hh Ta Vt "signed char" Ta Vt "unsigned char" Ta Vt "signed char *" | |
275 | .It Cm h Ta Vt short Ta Vt "unsigned short" Ta Vt "short *" | |
276 | .It Cm l No (ell) Ta Vt long Ta Vt "unsigned long" Ta Vt "long *" | |
277 | .It Cm ll No (ell ell) Ta Vt "long long" Ta Vt "unsigned long long" Ta Vt "long long *" | |
278 | .It Cm j Ta Vt intmax_t Ta Vt uintmax_t Ta Vt "intmax_t *" | |
279 | .It Cm t Ta Vt ptrdiff_t Ta (see note) Ta Vt "ptrdiff_t *" | |
280 | .It Cm z Ta (see note) Ta Vt size_t Ta (see note) | |
281 | .It Cm q Em (deprecated) Ta Vt quad_t Ta Vt u_quad_t Ta Vt "quad_t *" | |
282 | .El | |
283 | .Pp | |
284 | Note: | |
285 | the | |
286 | .Cm t | |
287 | modifier, when applied to a | |
288 | .Cm o , u , x , | |
5b2abdfb A |
289 | or |
290 | .Cm X | |
9385eb3d A |
291 | conversion, indicates that the argument is of an unsigned type |
292 | equivalent in size to a | |
293 | .Vt ptrdiff_t . | |
294 | The | |
295 | .Cm z | |
296 | modifier, when applied to a | |
297 | .Cm d | |
5b2abdfb | 298 | or |
9385eb3d A |
299 | .Cm i |
300 | conversion, indicates that the argument is of a signed type equivalent in | |
301 | size to a | |
302 | .Vt size_t . | |
303 | Similarly, when applied to an | |
5b2abdfb | 304 | .Cm n |
9385eb3d A |
305 | conversion, it indicates that the argument is a pointer to a signed type |
306 | equivalent in size to a | |
307 | .Vt size_t . | |
308 | .Pp | |
309 | The following length modifier is valid for the | |
310 | .Cm a , A , e , E , f , F , g , | |
5b2abdfb A |
311 | or |
312 | .Cm G | |
9385eb3d A |
313 | conversion: |
314 | .Bl -column ".Sy Modifier" ".Cm a , A , e , E , f , F , g , G" | |
315 | .It Sy Modifier Ta Cm a , A , e , E , f , F , g , G | |
316 | .It Cm L Ta Vt "long double" | |
317 | .El | |
318 | .Pp | |
319 | The following length modifier is valid for the | |
320 | .Cm c | |
321 | or | |
322 | .Cm s | |
323 | conversion: | |
324 | .Bl -column ".Sy Modifier" ".Vt wint_t" ".Vt wchar_t *" | |
325 | .It Sy Modifier Ta Cm c Ta Cm s | |
326 | .It Cm l No (ell) Ta Vt wint_t Ta Vt "wchar_t *" | |
327 | .El | |
5b2abdfb A |
328 | .It |
329 | A character that specifies the type of conversion to be applied. | |
330 | .El | |
331 | .Pp | |
332 | A field width or precision, or both, may be indicated by | |
333 | an asterisk | |
334 | .Ql * | |
335 | or an asterisk followed by one or more decimal digits and a | |
336 | .Ql $ | |
337 | instead of a | |
338 | digit string. | |
339 | In this case, an | |
340 | .Vt int | |
341 | argument supplies the field width or precision. | |
342 | A negative field width is treated as a left adjustment flag followed by a | |
343 | positive field width; a negative precision is treated as though it were | |
344 | missing. | |
9385eb3d A |
345 | If a single format directive mixes positional |
346 | .Pq Li nn$ | |
5b2abdfb A |
347 | and non-positional arguments, the results are undefined. |
348 | .Pp | |
349 | The conversion specifiers and their meanings are: | |
9385eb3d | 350 | .Bl -tag -width ".Cm diouxX" |
5b2abdfb A |
351 | .It Cm diouxX |
352 | The | |
353 | .Vt int | |
354 | (or appropriate variant) argument is converted to signed decimal | |
355 | .Cm ( d | |
356 | and | |
357 | .Cm i ) , | |
358 | unsigned octal | |
359 | .Pq Cm o , | |
360 | unsigned decimal | |
361 | .Pq Cm u , | |
362 | or unsigned hexadecimal | |
363 | .Cm ( x | |
364 | and | |
365 | .Cm X ) | |
366 | notation. | |
367 | The letters | |
9385eb3d | 368 | .Dq Li abcdef |
5b2abdfb A |
369 | are used for |
370 | .Cm x | |
371 | conversions; the letters | |
9385eb3d | 372 | .Dq Li ABCDEF |
5b2abdfb A |
373 | are used for |
374 | .Cm X | |
375 | conversions. | |
376 | The precision, if any, gives the minimum number of digits that must | |
377 | appear; if the converted value requires fewer digits, it is padded on | |
378 | the left with zeros. | |
379 | .It Cm DOU | |
380 | The | |
9385eb3d | 381 | .Vt "long int" |
5b2abdfb A |
382 | argument is converted to signed decimal, unsigned octal, or unsigned |
383 | decimal, as if the format had been | |
384 | .Cm ld , lo , | |
385 | or | |
386 | .Cm lu | |
387 | respectively. | |
388 | These conversion characters are deprecated, and will eventually disappear. | |
389 | .It Cm eE | |
390 | The | |
391 | .Vt double | |
392 | argument is rounded and converted in the style | |
9385eb3d | 393 | .Sm off |
974e3884 | 394 | .Oo \- Oc Ar d Li \&. Ar ddd Li e \(+- Ar dd |
9385eb3d | 395 | .Sm on |
5b2abdfb A |
396 | where there is one digit before the |
397 | decimal-point character | |
398 | and the number of digits after it is equal to the precision; | |
399 | if the precision is missing, | |
400 | it is taken as 6; if the precision is | |
401 | zero, no decimal-point character appears. | |
402 | An | |
403 | .Cm E | |
404 | conversion uses the letter | |
9385eb3d | 405 | .Ql E |
5b2abdfb | 406 | (rather than |
9385eb3d | 407 | .Ql e ) |
5b2abdfb A |
408 | to introduce the exponent. |
409 | The exponent always contains at least two digits; if the value is zero, | |
410 | the exponent is 00. | |
9385eb3d A |
411 | .Pp |
412 | For | |
413 | .Cm a , A , e , E , f , F , g , | |
414 | and | |
415 | .Cm G | |
416 | conversions, positive and negative infinity are represented as | |
417 | .Li inf | |
418 | and | |
419 | .Li -inf | |
420 | respectively when using the lowercase conversion character, and | |
421 | .Li INF | |
422 | and | |
423 | .Li -INF | |
424 | respectively when using the uppercase conversion character. | |
425 | Similarly, NaN is represented as | |
426 | .Li nan | |
427 | when using the lowercase conversion, and | |
428 | .Li NAN | |
429 | when using the uppercase conversion. | |
430 | .It Cm fF | |
5b2abdfb A |
431 | The |
432 | .Vt double | |
433 | argument is rounded and converted to decimal notation in the style | |
9385eb3d A |
434 | .Sm off |
435 | .Oo \- Oc Ar ddd Li \&. Ar ddd , | |
436 | .Sm on | |
5b2abdfb A |
437 | where the number of digits after the decimal-point character |
438 | is equal to the precision specification. | |
439 | If the precision is missing, it is taken as 6; if the precision is | |
440 | explicitly zero, no decimal-point character appears. | |
441 | If a decimal point appears, at least one digit appears before it. | |
442 | .It Cm gG | |
443 | The | |
444 | .Vt double | |
445 | argument is converted in style | |
446 | .Cm f | |
447 | or | |
448 | .Cm e | |
449 | (or | |
9385eb3d A |
450 | .Cm F |
451 | or | |
5b2abdfb A |
452 | .Cm E |
453 | for | |
454 | .Cm G | |
455 | conversions). | |
456 | The precision specifies the number of significant digits. | |
457 | If the precision is missing, 6 digits are given; if the precision is zero, | |
458 | it is treated as 1. | |
459 | Style | |
460 | .Cm e | |
9385eb3d | 461 | is used if the exponent from its conversion is less than \-4 or greater than |
5b2abdfb A |
462 | or equal to the precision. |
463 | Trailing zeros are removed from the fractional part of the result; a | |
464 | decimal point appears only if it is followed by at least one digit. | |
9385eb3d A |
465 | .It Cm aA |
466 | The | |
467 | .Vt double | |
468 | argument is converted to hexadecimal notation in the style | |
469 | .Sm off | |
974e3884 | 470 | .Oo \- Oc Li 0x Ar h Li \&. Ar hhhp Oo \(+- Oc Ar d , |
9385eb3d A |
471 | .Sm on |
472 | where the number of digits after the hexadecimal-point character | |
473 | is equal to the precision specification. | |
474 | If the precision is missing, it is taken as enough to exactly | |
475 | represent the floating-point number; if the precision is | |
476 | explicitly zero, no hexadecimal-point character appears. | |
477 | This is an exact conversion of the mantissa+exponent internal | |
478 | floating point representation; the | |
479 | .Sm off | |
480 | .Oo \- Oc Li 0x Ar h Li \&. Ar hhh | |
481 | .Sm on | |
482 | portion represents exactly the mantissa; only denormalized | |
483 | mantissas have a zero value to the left of the hexadecimal | |
484 | point. | |
485 | The | |
486 | .Cm p | |
487 | is a literal character | |
488 | .Ql p ; | |
489 | the exponent is preceded by a positive or negative sign | |
490 | and is represented in decimal, using only enough characters | |
491 | to represent the exponent. | |
492 | The | |
493 | .Cm A | |
494 | conversion uses the prefix | |
495 | .Dq Li 0X | |
496 | (rather than | |
497 | .Dq Li 0x ) , | |
498 | the letters | |
499 | .Dq Li ABCDEF | |
500 | (rather than | |
501 | .Dq Li abcdef ) | |
502 | to represent the hex digits, and the letter | |
503 | .Ql P | |
504 | (rather than | |
505 | .Ql p ) | |
506 | to separate the mantissa and exponent. | |
507 | .It Cm C | |
508 | Treated as | |
509 | .Cm c | |
510 | with the | |
511 | .Cm l | |
512 | (ell) modifier. | |
5b2abdfb A |
513 | .It Cm c |
514 | The | |
515 | .Vt int | |
516 | argument is converted to an | |
9385eb3d A |
517 | .Vt "unsigned char" , |
518 | then to a | |
519 | .Vt wchar_t | |
520 | as if by | |
521 | .Xr btowc 3 , | |
5b2abdfb | 522 | and the resulting character is written. |
9385eb3d A |
523 | .Pp |
524 | If the | |
525 | .Cm l | |
526 | (ell) modifier is used, the | |
527 | .Vt wint_t | |
528 | argument is converted to a | |
529 | .Vt wchar_t | |
530 | and written. | |
531 | .It Cm S | |
532 | Treated as | |
533 | .Cm s | |
534 | with the | |
535 | .Cm l | |
536 | (ell) modifier. | |
5b2abdfb A |
537 | .It Cm s |
538 | The | |
9385eb3d | 539 | .Vt "char *" |
5b2abdfb | 540 | argument is expected to be a pointer to an array of character type (pointer |
9385eb3d A |
541 | to a string) containing a multibyte sequence. |
542 | Characters from the array are converted to wide characters and written up to | |
543 | (but not including) | |
5b2abdfb A |
544 | a terminating |
545 | .Dv NUL | |
546 | character; | |
547 | if a precision is specified, no more than the number specified are | |
548 | written. | |
549 | If a precision is given, no null character | |
550 | need be present; if the precision is not specified, or is greater than | |
551 | the size of the array, the array must contain a terminating | |
552 | .Dv NUL | |
553 | character. | |
9385eb3d A |
554 | .Pp |
555 | If the | |
556 | .Cm l | |
557 | (ell) modifier is used, the | |
558 | .Vt "wchar_t *" | |
559 | argument is expected to be a pointer to an array of wide characters | |
560 | (pointer to a wide string). | |
561 | Each wide character in the string | |
562 | is written. | |
563 | Wide characters from the array are written up to (but not including) | |
564 | a terminating wide | |
565 | .Dv NUL | |
566 | character; | |
567 | if a precision is specified, no more than the number specified are | |
568 | written (including shift sequences). | |
569 | If a precision is given, no null character | |
570 | need be present; if the precision is not specified, or is greater than | |
571 | the number of characters in | |
572 | the string, the array must contain a terminating wide | |
573 | .Dv NUL | |
574 | character. | |
5b2abdfb A |
575 | .It Cm p |
576 | The | |
9385eb3d | 577 | .Vt "void *" |
5b2abdfb A |
578 | pointer argument is printed in hexadecimal (as if by |
579 | .Ql %#x | |
580 | or | |
581 | .Ql %#lx ) . | |
582 | .It Cm n | |
583 | The number of characters written so far is stored into the | |
584 | integer indicated by the | |
9385eb3d | 585 | .Vt "int *" |
5b2abdfb A |
586 | (or variant) pointer argument. |
587 | No argument is converted. | |
588 | .It Cm % | |
589 | A | |
590 | .Ql % | |
591 | is written. | |
592 | No argument is converted. | |
593 | The complete conversion specification | |
594 | is | |
595 | .Ql %% . | |
596 | .El | |
597 | .Pp | |
9385eb3d A |
598 | The decimal point |
599 | character is defined in the program's locale (category | |
600 | .Dv LC_NUMERIC ) . | |
601 | .Pp | |
5b2abdfb | 602 | In no case does a non-existent or small field width cause truncation of |
9385eb3d A |
603 | a numeric field; if the result of a conversion is wider than the field |
604 | width, the | |
5b2abdfb | 605 | field is expanded to contain the conversion result. |
9385eb3d A |
606 | .Sh SECURITY CONSIDERATIONS |
607 | Refer to | |
608 | .Xr printf 3 . | |
974e3884 A |
609 | .Sh ERRORS |
610 | Refer to | |
611 | .Xr printf 3 . | |
5b2abdfb | 612 | .Sh SEE ALSO |
9385eb3d A |
613 | .Xr btowc 3 , |
614 | .Xr fputws 3 , | |
615 | .Xr printf 3 , | |
616 | .Xr putwc 3 , | |
617 | .Xr setlocale 3 , | |
618 | .Xr wcsrtombs 3 , | |
ad3c9f2a | 619 | .Xr wprintf_l 3 , |
9385eb3d | 620 | .Xr wscanf 3 |
5b2abdfb | 621 | .Sh STANDARDS |
9385eb3d A |
622 | Subject to the caveats noted in the |
623 | .Sx BUGS | |
624 | section | |
625 | of | |
626 | .Xr printf 3 , | |
627 | the | |
628 | .Fn wprintf , | |
629 | .Fn fwprintf , | |
630 | .Fn swprintf , | |
631 | .Fn vwprintf , | |
974e3884 | 632 | .Fn vfwprintf |
5b2abdfb | 633 | and |
9385eb3d | 634 | .Fn vswprintf |
5b2abdfb A |
635 | functions |
636 | conform to | |
9385eb3d | 637 | .St -isoC-99 . |