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