[9] | 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>
|
---|
| 13 |
|
---|
| 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;
|
---|
| 104 | .TP
|
---|
| 105 | \(bu
|
---|
| 106 | a `+' character specifying that there should always be
|
---|
| 107 | a sign placed before the number when using signed conversions.
|
---|
| 108 | .TP
|
---|
| 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.
|
---|
| 112 | .RE
|
---|
| 113 | .TP
|
---|
| 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;
|
---|
| 122 | .TP
|
---|
| 123 | \(bu
|
---|
| 124 | an optional period
|
---|
| 125 | .RB ` . '
|
---|
| 126 | which serves to separate the field width from the next digit string;
|
---|
| 127 | .TP
|
---|
| 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;
|
---|
| 134 | .TP
|
---|
| 135 | \(bu
|
---|
| 136 | the character
|
---|
| 137 | .B l
|
---|
| 138 | specifying that a following
|
---|
| 139 | .BR d ,
|
---|
| 140 | .BR o ,
|
---|
| 141 | .BR x ,
|
---|
| 142 | or
|
---|
| 143 | .B u
|
---|
| 144 | corresponds to a long integer
|
---|
| 145 | .IR arg .
|
---|
| 146 | .TP
|
---|
| 147 | \(bu
|
---|
| 148 | a character which indicates the type of
|
---|
| 149 | conversion to be applied.
|
---|
| 150 | .PP
|
---|
| 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.
|
---|
| 156 | .PP
|
---|
| 157 | The conversion characters
|
---|
| 158 | and their meanings are
|
---|
| 159 | .TP
|
---|
| 160 | .B dox
|
---|
| 161 | The integer
|
---|
| 162 | .I arg
|
---|
| 163 | is converted to decimal, octal, or
|
---|
| 164 | hexadecimal notation respectively.
|
---|
| 165 | .TP
|
---|
| 166 | .B X
|
---|
| 167 | Like
|
---|
| 168 | .BR x ,
|
---|
| 169 | but use upper case instead of lower case.
|
---|
| 170 | .TP
|
---|
| 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.
|
---|
| 184 | .TP
|
---|
| 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.
|
---|
| 195 | .TP
|
---|
| 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.
|
---|
| 207 | .TP
|
---|
| 208 | .B c
|
---|
| 209 | The character
|
---|
| 210 | .I arg
|
---|
| 211 | is printed.
|
---|
| 212 | .TP
|
---|
| 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.
|
---|
| 222 | .TP
|
---|
| 223 | .B u
|
---|
| 224 | The unsigned integer
|
---|
| 225 | .I arg
|
---|
| 226 | is converted to decimal
|
---|
| 227 | and printed.
|
---|
| 228 | .TP
|
---|
| 229 | .B %
|
---|
| 230 | Print a `%'; no argument is converted.
|
---|
| 231 | .PP
|
---|
| 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).
|
---|
| 240 | .PP
|
---|
| 241 | .B Examples
|
---|
| 242 | .br
|
---|
| 243 | To print a date and time in the form `Sunday, July 3, 10:02',
|
---|
| 244 | where
|
---|
| 245 | .I weekday
|
---|
| 246 | and
|
---|
| 247 | .I month
|
---|
| 248 | are pointers to null-terminated strings:
|
---|
| 249 | .PP
|
---|
| 250 | .RS
|
---|
| 251 | printf("%s, %s %d, %02d:%02d", weekday, month, day, hour, min);
|
---|
| 252 | .RE
|
---|
| 253 | .PP
|
---|
| 254 | To print
|
---|
| 255 | .if n pi
|
---|
| 256 | .if t \(*p
|
---|
| 257 | to 5 decimals:
|
---|
| 258 | .IP
|
---|
| 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).
|
---|