. use library function to parse memory string
[minix3.git] / man / man3 / printf.3
blob4c7d6d3b60bc4b4ec7640401574a6db6c0041969
1 .\"     @(#)printf.3s   6.3 (Berkeley) 6/5/86
2 .\"
3 .TH PRINTF 3 "June 5, 1986"
4 .AT 3
5 .SH NAME
6 printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf \- formatted output conversion
7 .SH SYNOPSIS
8 .nf
9 .ft B
10 #include <sys/types.h>
11 #include <stdio.h>
12 #include <stdarg.h>
14 int printf(const char *\fIformat\fP \fR[\fP, \fIarg\fP\fR] ...\fP);
15 int fprintf(FILE *\fIstream\fP, const char *\fIformat\fP \fR[\fP, \fIarg\fP\fR] ...\fP);
16 int sprintf(char *\fIs\fP, const char *\fIformat\fP \fR[\fP, \fIarg\fP\fR] ...\fP);
17 int snprintf(char *\fIs\fP, size_t \fIn\fP, const char *\fIformat\fP \fR[\fP, \fIarg\fP\fR] ...\fP);
18 int vprintf(const char *\fIformat\fP, va_list \fIargs\fP);
19 int vfprintf(FILE *\fIstream\fP, const char *\fIformat\fP, va_list \fIargs\fP);
20 int vsprintf(char *\fIs\fP, const char *\fIformat\fP, va_list \fIargs\fP);
21 int vsnprintf(char *\fIs\fP, size_t \fIn\fP, const char *\fIformat\fP, va_list \fIargs\fP);
22 .ft R
23 .fi
24 .SH DESCRIPTION
25 .B Printf
26 places output on the standard output stream
27 .BR stdout .
28 .B Fprintf
29 places output on the named output
30 .IR stream .
31 .B Sprintf
32 places `output' in the string
33 .IR s ,
34 followed by the character `\e0'.
35 .B Snprintf
36 (Minix-vmd only)
37 is like
38 .B sprintf
39 except that no more than
40 .IR n \-1
41 characters are written to
42 .I s
43 followed by a `\e0'.
44 .PP
45 The
46 .B v*printf
47 functions can be used to make functions like the first four by using the
48 .BR stdarg (3)
49 method to process the argument.
50 .PP
51 Each of these functions converts, formats, and prints its arguments after
52 the first under control of the first argument.
53 The first argument is a character string which contains two types of objects:
54 plain characters, which are simply copied to the output stream,
55 and conversion specifications, each of which causes conversion and printing
56 of the next successive
57 .IR arg .
58 .PP
59 Each conversion specification is introduced by the character
60 .BR % .
61 The remainder of the conversion specification includes
62 in the following order
63 .TP
64 \(bu
65 Zero or more of following flags:
66 .RS
67 .TP
68 \(bu
69 a `#' character
70 specifying that the value should be converted to an ``alternate form''.
71 For 
72 .BR c ,
73 .BR d ,
74 .BR s ,
75 and
76 .BR u
77 conversions, this option has no effect.  For 
78 .B o
79 conversions, the precision of the number is increased to force the first
80 character of the output string to a zero.  For 
81 .BR x ( X )
82 conversion, a non-zero result has the string 
83 .BR 0x ( 0X )
84 prepended to it.  For 
85 .BR e ,
86 .BR E ,
87 .BR f ,
88 .BR g ,
89 and
90 .BR G
91 conversions, the result will always contain a decimal point, even if no
92 digits follow the point (normally, a decimal point only appears in the
93 results of those conversions if a digit follows the decimal point).  For
94 .B g
95 and
96 .B G
97 conversions, trailing zeros are not removed from the result as they
98 would otherwise be.
99 .TP
100 \(bu
101 a minus sign `\-' which specifies
102 .I "left adjustment"
103 of the converted value in the indicated field;
105 \(bu
106 a `+' character specifying that there should always be
107 a sign placed before the number when using signed conversions.
109 \(bu
110 a space specifying that a blank should be left before a positive number
111 during a signed conversion.  A `+' overrides a space if both are used.
114 \(bu
115 an optional digit string specifying a
116 .I "field width;"
117 if the converted value has fewer characters than the field width
118 it will be blank-padded on the left (or right,
119 if the left-adjustment indicator has been given) to make up the field width;
120 if the field width begins with a zero,
121 zero-padding will be done instead of blank-padding;
123 \(bu
124 an optional period
125 .RB ` . '
126 which serves to separate the field width from the next digit string;
128 \(bu
129 an optional digit string specifying a
130 .I precision
131 which specifies the number of digits to appear after the
132 decimal point, for e- and f-conversion, or the maximum number of characters
133 to be printed from a string;
135 \(bu
136 the character
137 .B l
138 specifying that a following
139 .BR d ,
140 .BR o ,
141 .BR x ,
143 .B u
144 corresponds to a long integer
145 .IR arg .
147 \(bu
148 a character which indicates the type of
149 conversion to be applied.
151 A field width or precision may be `*' instead of a digit string.
152 In this case an integer
153 .I arg
154 supplies
155 the field width or precision.
157 The conversion characters
158 and their meanings are
160 .B dox
161 The integer
162 .I arg
163 is converted to decimal, octal, or
164 hexadecimal notation respectively.
166 .B X
167 Like
168 .BR x ,
169 but use upper case instead of lower case.
171 .B f
172 The float or double
173 .I arg
174 is converted to decimal notation
175 in the style `[\fB\-\fR]ddd.ddd'
176 where the number of d's after the decimal point
177 is equal to the precision specification
178 for the argument.
179 If the precision
180 is missing,
181 6 digits are given;
182 if the precision is explicitly 0, no digits and
183 no decimal point are printed.
185 .B e
186 The float or double
187 .I arg
188 is converted in the style
189 `[\fB\-\fR]d\fB.\fRddd\fBe\fR\(+-dd'
190 where there is one digit before the decimal point and
191 the number after is equal to the
192 precision specification for the argument;
193 when the precision is missing,
194 6 digits are produced.
196 .B g
197 The float or double
198 .I arg
199 is printed in style
200 .BR d ,
201 in style
202 .BR f ,
203 or in
204 style
205 .BR e ,
206 whichever gives full precision in minimum space.
208 .B c
209 The character
210 .I arg
211 is printed.
213 .B s
214 .I Arg
215 is taken to be a string (character pointer)
216 and characters from the string are printed until
217 a null character or until
218 the number of characters indicated by the precision
219 specification is reached;
220 however if the precision is 0 or missing
221 all characters up to a null are printed.
223 .B u
224 The unsigned integer
225 .I arg
226 is converted to decimal
227 and printed.
229 .B %
230 Print a `%'; no argument is converted.
232 In no case does a non-existent or small field width
233 cause truncation of a field;
234 padding takes place only if the specified field
235 width exceeds the actual width.
236 Characters generated by
237 .B printf
238 are printed by 
239 .BR putc (3).
241 .B Examples
243 To print a date and time in the form `Sunday, July 3, 10:02',
244 where
245 .I weekday
247 .I month
248 are pointers to null-terminated strings:
251 printf("%s, %s %d, %02d:%02d", weekday, month, day, hour, min);
254 To print
255 .if n pi
256 .if t \(*p
257 to 5 decimals:
259 printf("pi = %.5f", 4*atan(1.0));
260 .SH "SEE ALSO"
261 .BR putc (3),
262 .BR scanf (3),
263 .BR ecvt (3),
264 .BR stdarg (3).