xref: /dflybsd-src/lib/libc/stdio/wprintf.3 (revision 839f7d6207d1654b664a46f2905d559773779bc3)
162f08720SJoerg Sonnenberger.\" Copyright (c) 1990, 1991, 1993
262f08720SJoerg Sonnenberger.\"	The Regents of the University of California.  All rights reserved.
362f08720SJoerg Sonnenberger.\"
462f08720SJoerg Sonnenberger.\" This code is derived from software contributed to Berkeley by
562f08720SJoerg Sonnenberger.\" Chris Torek and the American National Standards Committee X3,
662f08720SJoerg Sonnenberger.\" on Information Processing Systems.
762f08720SJoerg Sonnenberger.\"
862f08720SJoerg Sonnenberger.\" Redistribution and use in source and binary forms, with or without
962f08720SJoerg Sonnenberger.\" modification, are permitted provided that the following conditions
1062f08720SJoerg Sonnenberger.\" are met:
1162f08720SJoerg Sonnenberger.\" 1. Redistributions of source code must retain the above copyright
1262f08720SJoerg Sonnenberger.\"    notice, this list of conditions and the following disclaimer.
1362f08720SJoerg Sonnenberger.\" 2. Redistributions in binary form must reproduce the above copyright
1462f08720SJoerg Sonnenberger.\"    notice, this list of conditions and the following disclaimer in the
1562f08720SJoerg Sonnenberger.\"    documentation and/or other materials provided with the distribution.
16dc71b7abSJustin C. Sherrill.\" 3. Neither the name of the University nor the names of its contributors
1762f08720SJoerg Sonnenberger.\"    may be used to endorse or promote products derived from this software
1862f08720SJoerg Sonnenberger.\"    without specific prior written permission.
1962f08720SJoerg Sonnenberger.\"
2062f08720SJoerg Sonnenberger.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2162f08720SJoerg Sonnenberger.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2262f08720SJoerg Sonnenberger.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2362f08720SJoerg Sonnenberger.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2462f08720SJoerg Sonnenberger.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2562f08720SJoerg Sonnenberger.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2662f08720SJoerg Sonnenberger.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2762f08720SJoerg Sonnenberger.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2862f08720SJoerg Sonnenberger.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2962f08720SJoerg Sonnenberger.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3062f08720SJoerg Sonnenberger.\" SUCH DAMAGE.
3162f08720SJoerg Sonnenberger.\"
3262f08720SJoerg Sonnenberger.\"     @(#)printf.3	8.1 (Berkeley) 6/4/93
330d5acd74SJohn Marino.\" $FreeBSD: head/lib/libc/stdio/wprintf.3 208027 2010-05-13 12:07:55Z uqs $
3462f08720SJoerg Sonnenberger.\"
35*839f7d62SSascha Wildner.Dd March 21, 2022
3662f08720SJoerg Sonnenberger.Dt WPRINTF 3
3762f08720SJoerg Sonnenberger.Os
3862f08720SJoerg Sonnenberger.Sh NAME
390d5acd74SJohn Marino.Nm wprintf , fwprintf , swprintf ,
400d5acd74SJohn Marino.Nm vwprintf , vfwprintf , vswprintf
4162f08720SJoerg Sonnenberger.Nd formatted wide character output conversion
4262f08720SJoerg Sonnenberger.Sh LIBRARY
4362f08720SJoerg Sonnenberger.Lb libc
4462f08720SJoerg Sonnenberger.Sh SYNOPSIS
4562f08720SJoerg Sonnenberger.In stdio.h
4662f08720SJoerg Sonnenberger.In wchar.h
4762f08720SJoerg Sonnenberger.Ft int
4862f08720SJoerg Sonnenberger.Fn fwprintf "FILE * restrict stream" "const wchar_t * restrict format" ...
4962f08720SJoerg Sonnenberger.Ft int
5062f08720SJoerg Sonnenberger.Fn swprintf "wchar_t * restrict ws" "size_t n" "const wchar_t * restrict format" ...
5162f08720SJoerg Sonnenberger.Ft int
5262f08720SJoerg Sonnenberger.Fn wprintf "const wchar_t * restrict format" ...
5362f08720SJoerg Sonnenberger.In stdarg.h
5462f08720SJoerg Sonnenberger.Ft int
5584c95f95SSascha Wildner.Fn vfwprintf "FILE * restrict stream" "const wchar_t * restrict format" "va_list ap"
5662f08720SJoerg Sonnenberger.Ft int
5762f08720SJoerg Sonnenberger.Fn vswprintf "wchar_t * restrict ws" "size_t n" "const wchar_t *restrict format" "va_list ap"
5862f08720SJoerg Sonnenberger.Ft int
5962f08720SJoerg Sonnenberger.Fn vwprintf "const wchar_t * restrict format" "va_list ap"
6062f08720SJoerg Sonnenberger.Sh DESCRIPTION
6162f08720SJoerg SonnenbergerThe
6262f08720SJoerg Sonnenberger.Fn wprintf
6362f08720SJoerg Sonnenbergerfamily of functions produces output according to a
6462f08720SJoerg Sonnenberger.Fa format
6562f08720SJoerg Sonnenbergeras described below.
6662f08720SJoerg SonnenbergerThe
6762f08720SJoerg Sonnenberger.Fn wprintf
6862f08720SJoerg Sonnenbergerand
6962f08720SJoerg Sonnenberger.Fn vwprintf
7062f08720SJoerg Sonnenbergerfunctions
7162f08720SJoerg Sonnenbergerwrite output to
7262f08720SJoerg Sonnenberger.Dv stdout ,
7362f08720SJoerg Sonnenbergerthe standard output stream;
7462f08720SJoerg Sonnenberger.Fn fwprintf
7562f08720SJoerg Sonnenbergerand
7662f08720SJoerg Sonnenberger.Fn vfwprintf
7762f08720SJoerg Sonnenbergerwrite output to the given output
7862f08720SJoerg Sonnenberger.Fa stream ;
7962f08720SJoerg Sonnenberger.Fn swprintf
8062f08720SJoerg Sonnenbergerand
8162f08720SJoerg Sonnenberger.Fn vswprintf
8262f08720SJoerg Sonnenbergerwrite to the wide character string
8362f08720SJoerg Sonnenberger.Fa ws .
8462f08720SJoerg Sonnenberger.Pp
8562f08720SJoerg SonnenbergerThese functions write the output under the control of a
8662f08720SJoerg Sonnenberger.Fa format
8762f08720SJoerg Sonnenbergerstring that specifies how subsequent arguments
8862f08720SJoerg Sonnenberger(or arguments accessed via the variable-length argument facilities of
8962f08720SJoerg Sonnenberger.Xr stdarg 3 )
9062f08720SJoerg Sonnenbergerare converted for output.
9162f08720SJoerg Sonnenberger.Pp
9262f08720SJoerg SonnenbergerThese functions return the number of characters printed
9362f08720SJoerg Sonnenberger(not including the trailing
9462f08720SJoerg Sonnenberger.Ql \e0
9562f08720SJoerg Sonnenbergerused to end output to strings).
9662f08720SJoerg Sonnenberger.Pp
9762f08720SJoerg SonnenbergerThe
9862f08720SJoerg Sonnenberger.Fn swprintf
9962f08720SJoerg Sonnenbergerand
10062f08720SJoerg Sonnenberger.Fn vswprintf
10162f08720SJoerg Sonnenbergerfunctions will fail if
10262f08720SJoerg Sonnenberger.Fa n
10362f08720SJoerg Sonnenbergeror more wide characters were requested to be written,
10462f08720SJoerg Sonnenberger.Pp
10562f08720SJoerg SonnenbergerThe format string is composed of zero or more directives:
10662f08720SJoerg Sonnenbergerordinary
10762f08720SJoerg Sonnenbergercharacters (not
10862f08720SJoerg Sonnenberger.Cm % ) ,
10962f08720SJoerg Sonnenbergerwhich are copied unchanged to the output stream;
11062f08720SJoerg Sonnenbergerand conversion specifications, each of which results
11162f08720SJoerg Sonnenbergerin fetching zero or more subsequent arguments.
11262f08720SJoerg SonnenbergerEach conversion specification is introduced by
11362f08720SJoerg Sonnenbergerthe
11462f08720SJoerg Sonnenberger.Cm %
11562f08720SJoerg Sonnenbergercharacter.
11662f08720SJoerg SonnenbergerThe arguments must correspond properly (after type promotion)
11762f08720SJoerg Sonnenbergerwith the conversion specifier.
11862f08720SJoerg SonnenbergerAfter the
11962f08720SJoerg Sonnenberger.Cm % ,
12062f08720SJoerg Sonnenbergerthe following appear in sequence:
12162f08720SJoerg Sonnenberger.Bl -bullet
12262f08720SJoerg Sonnenberger.It
12362f08720SJoerg SonnenbergerAn optional field, consisting of a decimal digit string followed by a
12462f08720SJoerg Sonnenberger.Cm $ ,
12562f08720SJoerg Sonnenbergerspecifying the next argument to access.
12662f08720SJoerg SonnenbergerIf this field is not provided, the argument following the last
12762f08720SJoerg Sonnenbergerargument accessed will be used.
12862f08720SJoerg SonnenbergerArguments are numbered starting at
12962f08720SJoerg Sonnenberger.Cm 1 .
13062f08720SJoerg SonnenbergerIf unaccessed arguments in the format string are interspersed with ones that
13162f08720SJoerg Sonnenbergerare accessed the results will be indeterminate.
13262f08720SJoerg Sonnenberger.It
13362f08720SJoerg SonnenbergerZero or more of the following flags:
13462f08720SJoerg Sonnenberger.Bl -tag -width ".So \  Sc (space)"
13562f08720SJoerg Sonnenberger.It Sq Cm #
13662f08720SJoerg SonnenbergerThe value should be converted to an
13762f08720SJoerg Sonnenberger.Dq alternate form .
13862f08720SJoerg SonnenbergerFor
13962f08720SJoerg Sonnenberger.Cm c , d , i , n , p , s ,
14062f08720SJoerg Sonnenbergerand
14162f08720SJoerg Sonnenberger.Cm u
14262f08720SJoerg Sonnenbergerconversions, this option has no effect.
14362f08720SJoerg SonnenbergerFor
14462f08720SJoerg Sonnenberger.Cm o
14562f08720SJoerg Sonnenbergerconversions, the precision of the number is increased to force the first
14662f08720SJoerg Sonnenbergercharacter of the output string to a zero (except if a zero value is printed
14762f08720SJoerg Sonnenbergerwith an explicit precision of zero).
14862f08720SJoerg SonnenbergerFor
14962f08720SJoerg Sonnenberger.Cm x
15062f08720SJoerg Sonnenbergerand
15162f08720SJoerg Sonnenberger.Cm X
15262f08720SJoerg Sonnenbergerconversions, a non-zero result has the string
15362f08720SJoerg Sonnenberger.Ql 0x
15462f08720SJoerg Sonnenberger(or
15562f08720SJoerg Sonnenberger.Ql 0X
15662f08720SJoerg Sonnenbergerfor
15762f08720SJoerg Sonnenberger.Cm X
15862f08720SJoerg Sonnenbergerconversions) prepended to it.
15962f08720SJoerg SonnenbergerFor
16062f08720SJoerg Sonnenberger.Cm a , A , e , E , f , F , g ,
16162f08720SJoerg Sonnenbergerand
16262f08720SJoerg Sonnenberger.Cm G
16362f08720SJoerg Sonnenbergerconversions, the result will always contain a decimal point, even if no
16462f08720SJoerg Sonnenbergerdigits follow it (normally, a decimal point appears in the results of
16562f08720SJoerg Sonnenbergerthose conversions only if a digit follows).
16662f08720SJoerg SonnenbergerFor
16762f08720SJoerg Sonnenberger.Cm g
16862f08720SJoerg Sonnenbergerand
16962f08720SJoerg Sonnenberger.Cm G
17062f08720SJoerg Sonnenbergerconversions, trailing zeros are not removed from the result as they
17162f08720SJoerg Sonnenbergerwould otherwise be.
17262f08720SJoerg Sonnenberger.It So Cm 0 Sc (zero)
17362f08720SJoerg SonnenbergerZero padding.
17462f08720SJoerg SonnenbergerFor all conversions except
17562f08720SJoerg Sonnenberger.Cm n ,
17662f08720SJoerg Sonnenbergerthe converted value is padded on the left with zeros rather than blanks.
17762f08720SJoerg SonnenbergerIf a precision is given with a numeric conversion
17862f08720SJoerg Sonnenberger.Cm ( d , i , o , u , i , x ,
17962f08720SJoerg Sonnenbergerand
18062f08720SJoerg Sonnenberger.Cm X ) ,
18162f08720SJoerg Sonnenbergerthe
18262f08720SJoerg Sonnenberger.Cm 0
18362f08720SJoerg Sonnenbergerflag is ignored.
18462f08720SJoerg Sonnenberger.It Sq Cm \-
18562f08720SJoerg SonnenbergerA negative field width flag;
18662f08720SJoerg Sonnenbergerthe converted value is to be left adjusted on the field boundary.
18762f08720SJoerg SonnenbergerExcept for
18862f08720SJoerg Sonnenberger.Cm n
18962f08720SJoerg Sonnenbergerconversions, the converted value is padded on the right with blanks,
19062f08720SJoerg Sonnenbergerrather than on the left with blanks or zeros.
19162f08720SJoerg SonnenbergerA
19262f08720SJoerg Sonnenberger.Cm \-
19362f08720SJoerg Sonnenbergeroverrides a
19462f08720SJoerg Sonnenberger.Cm 0
19562f08720SJoerg Sonnenbergerif both are given.
19662f08720SJoerg Sonnenberger.It So "\ " Sc (space)
19762f08720SJoerg SonnenbergerA blank should be left before a positive number
19862f08720SJoerg Sonnenbergerproduced by a signed conversion
19962f08720SJoerg Sonnenberger.Cm ( a , A , d , e , E , f , F , g , G ,
20062f08720SJoerg Sonnenbergeror
20162f08720SJoerg Sonnenberger.Cm i ) .
20262f08720SJoerg Sonnenberger.It Sq Cm +
20362f08720SJoerg SonnenbergerA sign must always be placed before a
20462f08720SJoerg Sonnenbergernumber produced by a signed conversion.
20562f08720SJoerg SonnenbergerA
20662f08720SJoerg Sonnenberger.Cm +
20762f08720SJoerg Sonnenbergeroverrides a space if both are used.
20862f08720SJoerg Sonnenberger.It Sq Cm '
20962f08720SJoerg SonnenbergerDecimal conversions
21062f08720SJoerg Sonnenberger.Cm ( d , u ,
21162f08720SJoerg Sonnenbergeror
21262f08720SJoerg Sonnenberger.Cm i )
21362f08720SJoerg Sonnenbergeror the integral portion of a floating point conversion
21462f08720SJoerg Sonnenberger.Cm ( f
21562f08720SJoerg Sonnenbergeror
21662f08720SJoerg Sonnenberger.Cm F )
21762f08720SJoerg Sonnenbergershould be grouped and separated by thousands using
21862f08720SJoerg Sonnenbergerthe non-monetary separator returned by
21962f08720SJoerg Sonnenberger.Xr localeconv 3 .
22062f08720SJoerg Sonnenberger.El
22162f08720SJoerg Sonnenberger.It
22262f08720SJoerg SonnenbergerAn optional decimal digit string specifying a minimum field width.
22362f08720SJoerg SonnenbergerIf the converted value has fewer characters than the field width, it will
22462f08720SJoerg Sonnenbergerbe padded with spaces on the left (or right, if the left-adjustment
22562f08720SJoerg Sonnenbergerflag has been given) to fill out
22662f08720SJoerg Sonnenbergerthe field width.
22762f08720SJoerg Sonnenberger.It
22862f08720SJoerg SonnenbergerAn optional precision, in the form of a period
22962f08720SJoerg Sonnenberger.Cm \&.
23062f08720SJoerg Sonnenbergerfollowed by an
23162f08720SJoerg Sonnenbergeroptional digit string.
23262f08720SJoerg SonnenbergerIf the digit string is omitted, the precision is taken as zero.
23362f08720SJoerg SonnenbergerThis gives the minimum number of digits to appear for
23462f08720SJoerg Sonnenberger.Cm d , i , o , u , x ,
23562f08720SJoerg Sonnenbergerand
23662f08720SJoerg Sonnenberger.Cm X
23762f08720SJoerg Sonnenbergerconversions, the number of digits to appear after the decimal-point for
23862f08720SJoerg Sonnenberger.Cm a , A , e , E , f ,
23962f08720SJoerg Sonnenbergerand
24062f08720SJoerg Sonnenberger.Cm F
24162f08720SJoerg Sonnenbergerconversions, the maximum number of significant digits for
24262f08720SJoerg Sonnenberger.Cm g
24362f08720SJoerg Sonnenbergerand
24462f08720SJoerg Sonnenberger.Cm G
24562f08720SJoerg Sonnenbergerconversions, or the maximum number of characters to be printed from a
24662f08720SJoerg Sonnenbergerstring for
24762f08720SJoerg Sonnenberger.Cm s
24862f08720SJoerg Sonnenbergerconversions.
24962f08720SJoerg Sonnenberger.It
25062f08720SJoerg SonnenbergerAn optional length modifier, that specifies the size of the argument.
25162f08720SJoerg SonnenbergerThe following length modifiers are valid for the
25262f08720SJoerg Sonnenberger.Cm d , i , n , o , u , x ,
25362f08720SJoerg Sonnenbergeror
25462f08720SJoerg Sonnenberger.Cm X
25562f08720SJoerg Sonnenbergerconversion:
256*839f7d62SSascha Wildner.Bl -column ".Cm q Em (non-standard)" ".Vt signed char" ".Vt unsigned long long" ".Vt long long *"
25762f08720SJoerg Sonnenberger.It Sy Modifier Ta Cm d , i Ta Cm o , u , x , X Ta Cm n
25862f08720SJoerg Sonnenberger.It Cm hh Ta Vt "signed char" Ta Vt "unsigned char" Ta Vt "signed char *"
25962f08720SJoerg Sonnenberger.It Cm h Ta Vt short Ta Vt "unsigned short" Ta Vt "short *"
26062f08720SJoerg Sonnenberger.It Cm l No (ell) Ta Vt long Ta Vt "unsigned long" Ta Vt "long *"
26162f08720SJoerg Sonnenberger.It Cm ll No (ell ell) Ta Vt "long long" Ta Vt "unsigned long long" Ta Vt "long long *"
262*839f7d62SSascha Wildner.It Cm L Em (non-standard) Ta Vt "long long" Ta Vt "unsigned long long" Ta Vt "long long *"
26362f08720SJoerg Sonnenberger.It Cm j Ta Vt intmax_t Ta Vt uintmax_t Ta Vt "intmax_t *"
26462f08720SJoerg Sonnenberger.It Cm t Ta Vt ptrdiff_t Ta (see note) Ta Vt "ptrdiff_t *"
26562f08720SJoerg Sonnenberger.It Cm z Ta (see note) Ta Vt size_t Ta (see note)
26662f08720SJoerg Sonnenberger.It Cm q Em (deprecated) Ta Vt quad_t Ta Vt u_quad_t Ta Vt "quad_t *"
26762f08720SJoerg Sonnenberger.El
26862f08720SJoerg Sonnenberger.Pp
26962f08720SJoerg SonnenbergerNote:
27062f08720SJoerg Sonnenbergerthe
27162f08720SJoerg Sonnenberger.Cm t
27262f08720SJoerg Sonnenbergermodifier, when applied to a
27362f08720SJoerg Sonnenberger.Cm o , u , x ,
27462f08720SJoerg Sonnenbergeror
27562f08720SJoerg Sonnenberger.Cm X
27662f08720SJoerg Sonnenbergerconversion, indicates that the argument is of an unsigned type
27762f08720SJoerg Sonnenbergerequivalent in size to a
27862f08720SJoerg Sonnenberger.Vt ptrdiff_t .
27962f08720SJoerg SonnenbergerThe
28062f08720SJoerg Sonnenberger.Cm z
28162f08720SJoerg Sonnenbergermodifier, when applied to a
28262f08720SJoerg Sonnenberger.Cm d
28362f08720SJoerg Sonnenbergeror
28462f08720SJoerg Sonnenberger.Cm i
28562f08720SJoerg Sonnenbergerconversion, indicates that the argument is of a signed type equivalent in
28662f08720SJoerg Sonnenbergersize to a
28762f08720SJoerg Sonnenberger.Vt size_t .
28862f08720SJoerg SonnenbergerSimilarly, when applied to an
28962f08720SJoerg Sonnenberger.Cm n
29062f08720SJoerg Sonnenbergerconversion, it indicates that the argument is a pointer to a signed type
29162f08720SJoerg Sonnenbergerequivalent in size to a
29262f08720SJoerg Sonnenberger.Vt size_t .
29362f08720SJoerg Sonnenberger.Pp
29462f08720SJoerg SonnenbergerThe following length modifier is valid for the
29562f08720SJoerg Sonnenberger.Cm a , A , e , E , f , F , g ,
29662f08720SJoerg Sonnenbergeror
29762f08720SJoerg Sonnenberger.Cm G
29862f08720SJoerg Sonnenbergerconversion:
299*839f7d62SSascha Wildner.Bl -column ".Cm ll Em (non-standard)" ".Cm a , A , e , E , f , F , g , G"
30062f08720SJoerg Sonnenberger.It Sy Modifier Ta Cm a , A , e , E , f , F , g , G
30162f08720SJoerg Sonnenberger.It Cm L Ta Vt "long double"
302*839f7d62SSascha Wildner.It Cm ll Em (non-standard) Ta Vt "long double"
30362f08720SJoerg Sonnenberger.El
30462f08720SJoerg Sonnenberger.Pp
30562f08720SJoerg SonnenbergerThe following length modifier is valid for the
30662f08720SJoerg Sonnenberger.Cm c
30762f08720SJoerg Sonnenbergeror
30862f08720SJoerg Sonnenberger.Cm s
30962f08720SJoerg Sonnenbergerconversion:
31062f08720SJoerg Sonnenberger.Bl -column ".Sy Modifier" ".Vt wint_t" ".Vt wchar_t *"
31162f08720SJoerg Sonnenberger.It Sy Modifier Ta Cm c Ta Cm s
31262f08720SJoerg Sonnenberger.It Cm l No (ell) Ta Vt wint_t Ta Vt "wchar_t *"
31362f08720SJoerg Sonnenberger.El
31462f08720SJoerg Sonnenberger.It
31562f08720SJoerg SonnenbergerA character that specifies the type of conversion to be applied.
31662f08720SJoerg Sonnenberger.El
31762f08720SJoerg Sonnenberger.Pp
31862f08720SJoerg SonnenbergerA field width or precision, or both, may be indicated by
31962f08720SJoerg Sonnenbergeran asterisk
32062f08720SJoerg Sonnenberger.Ql *
32162f08720SJoerg Sonnenbergeror an asterisk followed by one or more decimal digits and a
32262f08720SJoerg Sonnenberger.Ql $
32362f08720SJoerg Sonnenbergerinstead of a
32462f08720SJoerg Sonnenbergerdigit string.
32562f08720SJoerg SonnenbergerIn this case, an
32662f08720SJoerg Sonnenberger.Vt int
32762f08720SJoerg Sonnenbergerargument supplies the field width or precision.
32862f08720SJoerg SonnenbergerA negative field width is treated as a left adjustment flag followed by a
329b827281dSSascha Wildnerpositive field width; a negative precision is treated as though it were
33062f08720SJoerg Sonnenbergermissing.
33162f08720SJoerg SonnenbergerIf a single format directive mixes positional
33262f08720SJoerg Sonnenberger.Pq Li nn$
33362f08720SJoerg Sonnenbergerand non-positional arguments, the results are undefined.
33462f08720SJoerg Sonnenberger.Pp
33562f08720SJoerg SonnenbergerThe conversion specifiers and their meanings are:
33662f08720SJoerg Sonnenberger.Bl -tag -width ".Cm diouxX"
33762f08720SJoerg Sonnenberger.It Cm diouxX
33862f08720SJoerg SonnenbergerThe
33962f08720SJoerg Sonnenberger.Vt int
34062f08720SJoerg Sonnenberger(or appropriate variant) argument is converted to signed decimal
34162f08720SJoerg Sonnenberger.Cm ( d
34262f08720SJoerg Sonnenbergerand
34362f08720SJoerg Sonnenberger.Cm i ) ,
34462f08720SJoerg Sonnenbergerunsigned octal
34562f08720SJoerg Sonnenberger.Pq Cm o ,
34662f08720SJoerg Sonnenbergerunsigned decimal
34762f08720SJoerg Sonnenberger.Pq Cm u ,
34862f08720SJoerg Sonnenbergeror unsigned hexadecimal
34962f08720SJoerg Sonnenberger.Cm ( x
35062f08720SJoerg Sonnenbergerand
35162f08720SJoerg Sonnenberger.Cm X )
35262f08720SJoerg Sonnenbergernotation.
35362f08720SJoerg SonnenbergerThe letters
35462f08720SJoerg Sonnenberger.Dq Li abcdef
35562f08720SJoerg Sonnenbergerare used for
35662f08720SJoerg Sonnenberger.Cm x
35762f08720SJoerg Sonnenbergerconversions; the letters
35862f08720SJoerg Sonnenberger.Dq Li ABCDEF
35962f08720SJoerg Sonnenbergerare used for
36062f08720SJoerg Sonnenberger.Cm X
36162f08720SJoerg Sonnenbergerconversions.
36262f08720SJoerg SonnenbergerThe precision, if any, gives the minimum number of digits that must
36362f08720SJoerg Sonnenbergerappear; if the converted value requires fewer digits, it is padded on
36462f08720SJoerg Sonnenbergerthe left with zeros.
36562f08720SJoerg Sonnenberger.It Cm DOU
36662f08720SJoerg SonnenbergerThe
36762f08720SJoerg Sonnenberger.Vt "long int"
36862f08720SJoerg Sonnenbergerargument is converted to signed decimal, unsigned octal, or unsigned
36962f08720SJoerg Sonnenbergerdecimal, as if the format had been
37062f08720SJoerg Sonnenberger.Cm ld , lo ,
37162f08720SJoerg Sonnenbergeror
37262f08720SJoerg Sonnenberger.Cm lu
37362f08720SJoerg Sonnenbergerrespectively.
37462f08720SJoerg SonnenbergerThese conversion characters are deprecated, and will eventually disappear.
37562f08720SJoerg Sonnenberger.It Cm eE
37662f08720SJoerg SonnenbergerThe
37762f08720SJoerg Sonnenberger.Vt double
37862f08720SJoerg Sonnenbergerargument is rounded and converted in the style
37962f08720SJoerg Sonnenberger.Sm off
3800d5acd74SJohn Marino.Oo \- Oc Ar d Li \&. Ar ddd Li e \(+- Ar dd
38162f08720SJoerg Sonnenberger.Sm on
38262f08720SJoerg Sonnenbergerwhere there is one digit before the
38362f08720SJoerg Sonnenbergerdecimal-point character
38462f08720SJoerg Sonnenbergerand the number of digits after it is equal to the precision;
38562f08720SJoerg Sonnenbergerif the precision is missing,
38662f08720SJoerg Sonnenbergerit is taken as 6; if the precision is
38762f08720SJoerg Sonnenbergerzero, no decimal-point character appears.
38862f08720SJoerg SonnenbergerAn
38962f08720SJoerg Sonnenberger.Cm E
39062f08720SJoerg Sonnenbergerconversion uses the letter
39162f08720SJoerg Sonnenberger.Ql E
39262f08720SJoerg Sonnenberger(rather than
39362f08720SJoerg Sonnenberger.Ql e )
39462f08720SJoerg Sonnenbergerto introduce the exponent.
39562f08720SJoerg SonnenbergerThe exponent always contains at least two digits; if the value is zero,
39662f08720SJoerg Sonnenbergerthe exponent is 00.
39762f08720SJoerg Sonnenberger.Pp
39862f08720SJoerg SonnenbergerFor
39962f08720SJoerg Sonnenberger.Cm a , A , e , E , f , F , g ,
40062f08720SJoerg Sonnenbergerand
40162f08720SJoerg Sonnenberger.Cm G
40262f08720SJoerg Sonnenbergerconversions, positive and negative infinity are represented as
40362f08720SJoerg Sonnenberger.Li inf
40462f08720SJoerg Sonnenbergerand
40562f08720SJoerg Sonnenberger.Li -inf
40662f08720SJoerg Sonnenbergerrespectively when using the lowercase conversion character, and
40762f08720SJoerg Sonnenberger.Li INF
40862f08720SJoerg Sonnenbergerand
40962f08720SJoerg Sonnenberger.Li -INF
41062f08720SJoerg Sonnenbergerrespectively when using the uppercase conversion character.
41162f08720SJoerg SonnenbergerSimilarly, NaN is represented as
41262f08720SJoerg Sonnenberger.Li nan
41362f08720SJoerg Sonnenbergerwhen using the lowercase conversion, and
41462f08720SJoerg Sonnenberger.Li NAN
41562f08720SJoerg Sonnenbergerwhen using the uppercase conversion.
41662f08720SJoerg Sonnenberger.It Cm fF
41762f08720SJoerg SonnenbergerThe
41862f08720SJoerg Sonnenberger.Vt double
41962f08720SJoerg Sonnenbergerargument is rounded and converted to decimal notation in the style
42062f08720SJoerg Sonnenberger.Sm off
42162f08720SJoerg Sonnenberger.Oo \- Oc Ar ddd Li \&. Ar ddd ,
42262f08720SJoerg Sonnenberger.Sm on
42362f08720SJoerg Sonnenbergerwhere the number of digits after the decimal-point character
42462f08720SJoerg Sonnenbergeris equal to the precision specification.
42562f08720SJoerg SonnenbergerIf the precision is missing, it is taken as 6; if the precision is
42662f08720SJoerg Sonnenbergerexplicitly zero, no decimal-point character appears.
42762f08720SJoerg SonnenbergerIf a decimal point appears, at least one digit appears before it.
42862f08720SJoerg Sonnenberger.It Cm gG
42962f08720SJoerg SonnenbergerThe
43062f08720SJoerg Sonnenberger.Vt double
43162f08720SJoerg Sonnenbergerargument is converted in style
43262f08720SJoerg Sonnenberger.Cm f
43362f08720SJoerg Sonnenbergeror
43462f08720SJoerg Sonnenberger.Cm e
43562f08720SJoerg Sonnenberger(or
43662f08720SJoerg Sonnenberger.Cm F
43762f08720SJoerg Sonnenbergeror
43862f08720SJoerg Sonnenberger.Cm E
43962f08720SJoerg Sonnenbergerfor
44062f08720SJoerg Sonnenberger.Cm G
44162f08720SJoerg Sonnenbergerconversions).
44262f08720SJoerg SonnenbergerThe precision specifies the number of significant digits.
44362f08720SJoerg SonnenbergerIf the precision is missing, 6 digits are given; if the precision is zero,
44462f08720SJoerg Sonnenbergerit is treated as 1.
44562f08720SJoerg SonnenbergerStyle
44662f08720SJoerg Sonnenberger.Cm e
44762f08720SJoerg Sonnenbergeris used if the exponent from its conversion is less than \-4 or greater than
44862f08720SJoerg Sonnenbergeror equal to the precision.
44962f08720SJoerg SonnenbergerTrailing zeros are removed from the fractional part of the result; a
45062f08720SJoerg Sonnenbergerdecimal point appears only if it is followed by at least one digit.
45162f08720SJoerg Sonnenberger.It Cm aA
45262f08720SJoerg SonnenbergerThe
45362f08720SJoerg Sonnenberger.Vt double
45462f08720SJoerg Sonnenbergerargument is converted to hexadecimal notation in the style
45562f08720SJoerg Sonnenberger.Sm off
4560d5acd74SJohn Marino.Oo \- Oc Li 0x Ar h Li \&. Ar hhhp Oo \(+- Oc Ar d ,
45762f08720SJoerg Sonnenberger.Sm on
45862f08720SJoerg Sonnenbergerwhere the number of digits after the hexadecimal-point character
45962f08720SJoerg Sonnenbergeris equal to the precision specification.
46062f08720SJoerg SonnenbergerIf the precision is missing, it is taken as enough to exactly
46162f08720SJoerg Sonnenbergerrepresent the floating-point number; if the precision is
46262f08720SJoerg Sonnenbergerexplicitly zero, no hexadecimal-point character appears.
46362f08720SJoerg SonnenbergerThis is an exact conversion of the mantissa+exponent internal
46462f08720SJoerg Sonnenbergerfloating point representation; the
46562f08720SJoerg Sonnenberger.Sm off
46662f08720SJoerg Sonnenberger.Oo \- Oc Li 0x Ar h Li \&. Ar hhh
46762f08720SJoerg Sonnenberger.Sm on
46862f08720SJoerg Sonnenbergerportion represents exactly the mantissa; only denormalized
46962f08720SJoerg Sonnenbergermantissas have a zero value to the left of the hexadecimal
47062f08720SJoerg Sonnenbergerpoint.
47162f08720SJoerg SonnenbergerThe
47262f08720SJoerg Sonnenberger.Cm p
47362f08720SJoerg Sonnenbergeris a literal character
47462f08720SJoerg Sonnenberger.Ql p ;
47562f08720SJoerg Sonnenbergerthe exponent is preceded by a positive or negative sign
47662f08720SJoerg Sonnenbergerand is represented in decimal, using only enough characters
47762f08720SJoerg Sonnenbergerto represent the exponent.
47862f08720SJoerg SonnenbergerThe
47962f08720SJoerg Sonnenberger.Cm A
48062f08720SJoerg Sonnenbergerconversion uses the prefix
48162f08720SJoerg Sonnenberger.Dq Li 0X
48262f08720SJoerg Sonnenberger(rather than
48362f08720SJoerg Sonnenberger.Dq Li 0x ) ,
48462f08720SJoerg Sonnenbergerthe letters
48562f08720SJoerg Sonnenberger.Dq Li ABCDEF
48662f08720SJoerg Sonnenberger(rather than
48762f08720SJoerg Sonnenberger.Dq Li abcdef )
48862f08720SJoerg Sonnenbergerto represent the hex digits, and the letter
48962f08720SJoerg Sonnenberger.Ql P
49062f08720SJoerg Sonnenberger(rather than
49162f08720SJoerg Sonnenberger.Ql p )
49262f08720SJoerg Sonnenbergerto separate the mantissa and exponent.
49362f08720SJoerg Sonnenberger.It Cm C
49462f08720SJoerg SonnenbergerTreated as
49562f08720SJoerg Sonnenberger.Cm c
49662f08720SJoerg Sonnenbergerwith the
49762f08720SJoerg Sonnenberger.Cm l
49862f08720SJoerg Sonnenberger(ell) modifier.
49962f08720SJoerg Sonnenberger.It Cm c
50062f08720SJoerg SonnenbergerThe
50162f08720SJoerg Sonnenberger.Vt int
50262f08720SJoerg Sonnenbergerargument is converted to an
50362f08720SJoerg Sonnenberger.Vt "unsigned char" ,
50462f08720SJoerg Sonnenbergerthen to a
50562f08720SJoerg Sonnenberger.Vt wchar_t
50662f08720SJoerg Sonnenbergeras if by
50762f08720SJoerg Sonnenberger.Xr btowc 3 ,
50862f08720SJoerg Sonnenbergerand the resulting character is written.
50962f08720SJoerg Sonnenberger.Pp
51062f08720SJoerg SonnenbergerIf the
51162f08720SJoerg Sonnenberger.Cm l
51262f08720SJoerg Sonnenberger(ell) modifier is used, the
51362f08720SJoerg Sonnenberger.Vt wint_t
51462f08720SJoerg Sonnenbergerargument is converted to a
51562f08720SJoerg Sonnenberger.Vt wchar_t
51662f08720SJoerg Sonnenbergerand written.
51762f08720SJoerg Sonnenberger.It Cm S
51862f08720SJoerg SonnenbergerTreated as
51962f08720SJoerg Sonnenberger.Cm s
52062f08720SJoerg Sonnenbergerwith the
52162f08720SJoerg Sonnenberger.Cm l
52262f08720SJoerg Sonnenberger(ell) modifier.
52362f08720SJoerg Sonnenberger.It Cm s
52462f08720SJoerg SonnenbergerThe
52562f08720SJoerg Sonnenberger.Vt "char *"
52662f08720SJoerg Sonnenbergerargument is expected to be a pointer to an array of character type (pointer
52762f08720SJoerg Sonnenbergerto a string) containing a multibyte sequence.
52862f08720SJoerg SonnenbergerCharacters from the array are converted to wide characters and written up to
52962f08720SJoerg Sonnenberger(but not including)
53062f08720SJoerg Sonnenbergera terminating
53162f08720SJoerg Sonnenberger.Dv NUL
53262f08720SJoerg Sonnenbergercharacter;
53362f08720SJoerg Sonnenbergerif a precision is specified, no more than the number specified are
53462f08720SJoerg Sonnenbergerwritten.
53562f08720SJoerg SonnenbergerIf a precision is given, no null character
53662f08720SJoerg Sonnenbergerneed be present; if the precision is not specified, or is greater than
53762f08720SJoerg Sonnenbergerthe size of the array, the array must contain a terminating
53862f08720SJoerg Sonnenberger.Dv NUL
53962f08720SJoerg Sonnenbergercharacter.
54062f08720SJoerg Sonnenberger.Pp
54162f08720SJoerg SonnenbergerIf the
54262f08720SJoerg Sonnenberger.Cm l
54362f08720SJoerg Sonnenberger(ell) modifier is used, the
54462f08720SJoerg Sonnenberger.Vt "wchar_t *"
54562f08720SJoerg Sonnenbergerargument is expected to be a pointer to an array of wide characters
54662f08720SJoerg Sonnenberger(pointer to a wide string).
54762f08720SJoerg SonnenbergerEach wide character in the string
54862f08720SJoerg Sonnenbergeris written.
54962f08720SJoerg SonnenbergerWide characters from the array are written up to (but not including)
55062f08720SJoerg Sonnenbergera terminating wide
55162f08720SJoerg Sonnenberger.Dv NUL
55262f08720SJoerg Sonnenbergercharacter;
55362f08720SJoerg Sonnenbergerif a precision is specified, no more than the number specified are
55462f08720SJoerg Sonnenbergerwritten (including shift sequences).
55562f08720SJoerg SonnenbergerIf a precision is given, no null character
55662f08720SJoerg Sonnenbergerneed be present; if the precision is not specified, or is greater than
55762f08720SJoerg Sonnenbergerthe number of characters in
55862f08720SJoerg Sonnenbergerthe string, the array must contain a terminating wide
55962f08720SJoerg Sonnenberger.Dv NUL
56062f08720SJoerg Sonnenbergercharacter.
56162f08720SJoerg Sonnenberger.It Cm p
56262f08720SJoerg SonnenbergerThe
56362f08720SJoerg Sonnenberger.Vt "void *"
56462f08720SJoerg Sonnenbergerpointer argument is printed in hexadecimal (as if by
56562f08720SJoerg Sonnenberger.Ql %#x
56662f08720SJoerg Sonnenbergeror
56762f08720SJoerg Sonnenberger.Ql %#lx ) .
56862f08720SJoerg Sonnenberger.It Cm n
56962f08720SJoerg SonnenbergerThe number of characters written so far is stored into the
57062f08720SJoerg Sonnenbergerinteger indicated by the
57162f08720SJoerg Sonnenberger.Vt "int *"
57262f08720SJoerg Sonnenberger(or variant) pointer argument.
57362f08720SJoerg SonnenbergerNo argument is converted.
57462f08720SJoerg Sonnenberger.It Cm %
57562f08720SJoerg SonnenbergerA
57662f08720SJoerg Sonnenberger.Ql %
57762f08720SJoerg Sonnenbergeris written.
57862f08720SJoerg SonnenbergerNo argument is converted.
57962f08720SJoerg SonnenbergerThe complete conversion specification
58062f08720SJoerg Sonnenbergeris
58162f08720SJoerg Sonnenberger.Ql %% .
58262f08720SJoerg Sonnenberger.El
58362f08720SJoerg Sonnenberger.Pp
58462f08720SJoerg SonnenbergerThe decimal point
58562f08720SJoerg Sonnenbergercharacter is defined in the program's locale (category
58662f08720SJoerg Sonnenberger.Dv LC_NUMERIC ) .
58762f08720SJoerg Sonnenberger.Pp
58862f08720SJoerg SonnenbergerIn no case does a non-existent or small field width cause truncation of
58962f08720SJoerg Sonnenbergera numeric field; if the result of a conversion is wider than the field
59062f08720SJoerg Sonnenbergerwidth, the
59162f08720SJoerg Sonnenbergerfield is expanded to contain the conversion result.
59262f08720SJoerg Sonnenberger.Sh SEE ALSO
59362f08720SJoerg Sonnenberger.Xr btowc 3 ,
59462f08720SJoerg Sonnenberger.Xr fputws 3 ,
59562f08720SJoerg Sonnenberger.Xr printf 3 ,
59662f08720SJoerg Sonnenberger.Xr putwc 3 ,
59762f08720SJoerg Sonnenberger.Xr setlocale 3 ,
59862f08720SJoerg Sonnenberger.Xr wcsrtombs 3 ,
59962f08720SJoerg Sonnenberger.Xr wscanf 3
60062f08720SJoerg Sonnenberger.Sh STANDARDS
60162f08720SJoerg SonnenbergerSubject to the caveats noted in the
60262f08720SJoerg Sonnenberger.Sx BUGS
60362f08720SJoerg Sonnenbergersection
60462f08720SJoerg Sonnenbergerof
60562f08720SJoerg Sonnenberger.Xr printf 3 ,
60662f08720SJoerg Sonnenbergerthe
60762f08720SJoerg Sonnenberger.Fn wprintf ,
60862f08720SJoerg Sonnenberger.Fn fwprintf ,
60962f08720SJoerg Sonnenberger.Fn swprintf ,
61062f08720SJoerg Sonnenberger.Fn vwprintf ,
61162f08720SJoerg Sonnenberger.Fn vfwprintf
61262f08720SJoerg Sonnenbergerand
61362f08720SJoerg Sonnenberger.Fn vswprintf
61462f08720SJoerg Sonnenbergerfunctions
61562f08720SJoerg Sonnenbergerconform to
61662f08720SJoerg Sonnenberger.St -isoC-99 .
617*839f7d62SSascha Wildner.Pp
618*839f7d62SSascha WildnerAs an extension,
619*839f7d62SSascha Wildner.Dx
620*839f7d62SSascha Wildnertreats the length modifiers
621*839f7d62SSascha Wildner.Cm ll
622*839f7d62SSascha Wildnerand
623*839f7d62SSascha Wildner.Cm L
624*839f7d62SSascha Wildneras synonyms, so that the non-standard
625*839f7d62SSascha Wildner.Cm %Ld
626*839f7d62SSascha Wildneris equivalent to
627*839f7d62SSascha Wildner.Cm %ld
628*839f7d62SSascha Wildnerand the non-standard
629*839f7d62SSascha Wildner.Cm %llg
630*839f7d62SSascha Wildneris equivalent
631*839f7d62SSascha Wildnerto
632*839f7d62SSascha Wildner.Cm %Lg .
6330d5acd74SJohn Marino.Sh SECURITY CONSIDERATIONS
6340d5acd74SJohn MarinoRefer to
6350d5acd74SJohn Marino.Xr printf 3 .
636