PRINTF(3S)PRINTF(3S)NAME
printf, fprintf, sprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *s, const char *format, ...);
DESCRIPTION
Printf places output on the standard output stream stdout. Fprintf
places output on the named output stream. Sprintf places `output' in
the string s, followed by the character `\0'.
Each of these functions converts, and formats the arguments arg under
control of the format string format. The format string is a character
string which contains two types of objects: plain characters, which are
simply copied to the output stream, and conversion specifications, each
of which causes conversion and printing of the next successive arg in
the parameter list passed to printf.
Each conversion specification is introduced by the character %. The
remainder of the conversion specification includes in the following
order
· Zero or more of following flags (in any order):
· a `#' character specifying that the value should be
converted to an ``alternate form''. For c, d, s, and u,
conversions, this option has no effect. For o
conversions, the precision of the number is increased to
force the first character of the output string to a zero.
For x(X) conversion, a non-zero result has the string
0x(0X) prepended to it. For e, E, f, g, and G,
conversions, the result will always contain a decimal
point, even if no digits follow the point (normally, a
decimal point only appears in the results of those
conversions if a digit follows the decimal point). For g
and G conversions, trailing zeros are not removed from
the result as they would otherwise be.
· a `0' character specifying that a `0' is to be used as
the fill character when padding conversions to field
width (the space character is the default fill character
if `0' is not specified)
· a minus sign `-' which specifies left adjustment of the
converted value in the indicated field; WARNING: left
adjustment of zero-filled numeric values is accepted, but
of dubious value
· a `+' character specifying that there should always be a
sign placed before the number when using signed
conversions.
· a space specifying that a blank should be left before a
positive number during a signed conversion. A `+'
overrides a space if both are used.
· an optional digit string specifying a field width; if the
converted value has fewer characters than the field width it
will be padded with the fill character on the left (or right, if
the left-adjustment indicator has been given) to make up the
field width;
· an optional period `.' which serves to separate the field width
from the next digit string;
· an optional digit string specifying a precision which specifies
the number of digits to appear after the decimal point, for e-
and f-conversion; or the maximum number of characters to be
printed from a string; or the minimum number of digits to be
printed with integer formats (leading zeros will be added to
fill to the precision);
· a data-width modifier, of `h' or `l'. `h' indicates the data
printed by a following d, i, o, x, or u corresponds to a short
or unsigned short value. `l' indicates the data printed by a
following d, i, o, x, or u corresponds to a long or unsigned
long value.
· a character which indicates the type of conversion to be
applied.
A field width or precision may be `*' instead of a digit string. In
this case an integer arg supplies the field width or precision.
The conversion characters and their meanings are
d, or i
The integer arg is converted to signed decimal notation.
o The integer arg is converted to unsigned octal notation (without
a leading zero).
x, or X
The integer arg is converted to hexadecimal notation.
Hexadecimal digits "abcdef" are used if `x' is specified,
"ABCDEF" are if `X' is specified. No leading "0x" or "0X" is
printed.
u The unsigned integer arg is converted to decimal and printed
(the result will be in the range 0 through MAXUINT, where
MAXUINT equals 4294967295 in NEXTSTEP).
c The character arg is printed. Null characters are printed.
s Arg is taken to be a string (character pointer) and characters
from the string are printed until a null character or until the
number of characters indicated by the precision specification is
reached; however if the precision is 0 or missing all characters
up to a null are printed. The string "(null pointer)" is
printed if arg was a null pointer.
f The float or double arg is converted to decimal notation in the
style `[-]mmm.ddd' where the number of d's is equal to the
precision specification. If the precision is missing, 6 digits
are given; if the precision is explicitly 0, no d's and no
decimal point are printed.
e, or E
The float or double arg is converted in the style `[-]m.ddde±xx'
where there is one digit before the decimal point and the number
of d's after is equal to the precision specification for the
argument. When the precision is missing, 6 digits are produced.
g, or G
The float or double arg is printed in style e if the exponent
printed would be less than -4 or greater than or equal to the
precision; otherwise, style f is used. Trailing zeros and
trailing decimal points are not printed.
p The void * arg is printed as a pointer. The exact format is
implementation dependent. In NEXTSTEP p prints identical to #x.
n The integer location pointed to by the int pointer arg is
written the number of characters converted to this point by this
call to printf. No argument is converted.
% Print a `%'; no argument is converted.
In no case does a non-existent or small field width cause truncation of
a field; padding takes place only if the specified field width exceeds
the actual width. Characters generated by printf are printed by
putc(3S).
EXAMPLES
To print a date and time in the form `Sunday, July 3, 10:02', where
weekday and month are pointers to null-terminated strings:
printf("%s, %s %d, %02d:%02d", weekday, month, day, hour, min);
To print pi to 5 decimals:
printf("pi = %.5f", 4*atan(1.0));
RETURN VALUE
Printf, fprintf, and sprintf return a negative value for unsuccessful
calls and stores an error code in errno, otherwise returns zero.
ERRORS
The underlying function of printf, fprintf, and sprintf is write(2).
The error conditions specified for write (2) apply to printf, fprintf,
and sprintf.
SEE ALSOwrite(2), putc(3S), scanf(3S)BUGS
Very wide fields (>128 characters) fail.
Values printed with both zero-fill and left-adjustment are certain to
be misinterpreted.
7th Edition August 1, 1992 PRINTF(3S)