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