Declarations:
int fprintf(FILE *stream,
const char *format, ...);
int printf(const char *format,
...);
int sprintf(char *str, const char
*format, ...);
int vfprintf(FILE *stream, const
char *format, va_list
arg);
int vprintf(const char *format,
va_list arg);
int vsprintf(char *str, const
char *format, va_list
arg);
The ..printf functions provide a means to output formatted
information to a stream.
fprintf |
sends formatted output to a stream |
printf |
sends formatted output to stdout |
sprintf |
sends formatted output to a string |
vfprintf |
sends formatted output to a stream using an argument
list |
vprintf |
sends formatted output to stdout using an argument
list |
vsprintf |
sends formatted output to a string using an argument
list |
These functions take the format string specified by the
format argument and apply each following argument to the
format specifiers in the string in a left to right fashion. Each
character in the format string is copied to the stream except
for conversion characters which specify a format specifier.
The string commands (sprintf and
vsprintf) append a null character to the end of
the string. This null character is not counted in the character
count.
The argument list commands (vfprintf,
vprintf, and vsprintf)
use an argument list which is prepared by va_start.
These commands do not call va_end (the
caller must call it).
A conversion specifier begins with the %
character. After the % character come the
following in this order:
| [flags] |
Control the conversion (optional). |
| [width] |
Defines the number of characters to print
(optional). |
| [.precision] |
Defines the amount of precision to print for a
number type (optional). |
| [modifier] |
Overrides the size (type) of the argument
(optional). |
| [type] |
The type of conversion to be applied (required). |
Flags:
- |
Value is left justified (default is right
justified). Overrides the 0 flag. |
+ |
Forces the sign (+ or -) to always be shown. Default
is to just show the - sign. Overrides the space flag. |
space |
Causes a positive value to display a space for the
sign. Negative values still show the - sign. |
# |
Alternate form:
| Conversion Character |
Result |
o |
Precision is increased to make the first
digit a zero. |
X or x |
Nonzero value will have 0x or 0X prefixed to
it. |
E, e, f, g, or G |
Result will always have a decimal point. |
G or g |
Trailing zeros will not be removed. |
|
0 |
For d, i, o, u, x, X, e, E, f, g, and G leading
zeros are used to pad the field width instead of spaces.
This is useful only with a width specifier. Precision
overrides this flag. |
Width:
The width of the field is specified here with a decimal value.
If the value is not large enough to fill the width, then the
rest of the field is padded with spaces (unless the 0 flag is
specified). If the value overflows the width of the field, then
the field is expanded to fit the value. If a *
is used in place of the width specifer, then the next argument
(which must be an int type) specifies the
width of the field. Note: when using the *
with the width and/or precision specifier, the width argument
comes first, then the precision argument, then the value to be
converted.
Precision:
The precision begins with a dot (.) to distinguish itself from
the width specifier. The precision can be given as a decimal
value or as an asterisk (*). If a *
is used, then the next argument (which is an int
type) specifies the precision. Note: when using the *
with the width and/or precision specifier, the width argument
comes first, then the precision argument, then the value to be
converted. Precision does not affect the c type.
| [.precision] |
Result |
| (none) |
Default precision values:
1 for d, i,
o, u, x,
X types. The minimum number of
digits to appear.
6 for f, e,
E types. Specifies the number of
digits after the decimal point.
For g or G types
all significant digits are shown.
For s type all characters in string
are print up to but not including the null character. |
. or
.0 |
For d, i,
o, u, x,
X types the default precis ion value
is used unless the value is zero in which case no
characters are printed.
For f, e,
E types no decimal point character or
digits are printed.
For g or G types
the precision is assumed to be 1.
|
.n |
For d, i,
o, u, x,
X types then at least n digits are
printed (padding with zeros if necessary).
For f, e,
E types specifies the number of digits
after the decimal point.
For g or G types
specifies the number of significant digits to print.
For s type specifies the maximum
number of characters to print.
|
Modifier:
A modifier changes the way a conversion specifier type is
interpreted.
| [modifier] |
[type] |
Effect |
h |
d, i,
o, u, x,
X |
Value is first converted to a short int or unsigned
short i nt. |
h |
n |
Specifies that the pointer points to a short int. |
l |
d, i,
o, u, x,
X |
Value is first converted to a long int or unsigned
long int . |
l |
n |
Specifies that the pointer points to a long int. |
L |
e, E,
f, g, G |
Value is first converted to a long double. |
Conversion specifier type:
The conversion specifier specifies what type the argument is to
be treated as.
| [type] |
Output |
d, i |
Type signed int. |
o |
Type unsigned int printed in
octal. |
u |
Type unsigned int printed in
decimal. |
x |
Type unsigned int printed in
hexadecimal as dddd using a, b, c, d, e, f. |
X |
Type unsigned int printed in
hexadecimal as dddd using A, B, C, D, E, F. |
f |
Type double printed as [-]ddd.ddd. |
e, E
|
Type double printed as [-]d.ddde�dd
where there is one digit printed before the decimal
(zero only if the value is zero). The exponent contains
at least two digits. If type is E then the exponent is
printed with a capital E. |
g, G
|
Type double printed as type e or
E if the exponent is less than -4 or greater than or
equal to the precision. Otherwise printed as type f.
Trailing zeros are removed. Decimal point character
appears only if there is a nonzero decimal digit. |
c |
Type char. Single character is
printed. |
s |
Type pointer to array. String is printed according
to precision (no precision prints entire string). |
p |
Prints the value of a pointer (the memory location
it holds). |
n |
The argument must be a pointer to an int.
Stores the number of characters printed thus far in the
int. No characters are printed. |
% |
A % sign is printed. |
The number of characters printed are returned. If an error
occurred, -1 is returned. |