PRINTF
Section: Standard I/O Functions (3S)
Updated: August 1, 1992
Index
Return to Main Contents
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 ALSO
write(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.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- EXAMPLES
-
- RETURN VALUE
-
- ERRORS
-
- SEE ALSO
-
- BUGS
-
This document was created by
man2html,
using the manual pages.
Time: 00:57:07 GMT, September 26, 2024