up | Inhaltsverzeichniss | Kommentar

Manual page for PRINTF(3S)

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 \(*p 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 | Inhaltsverzeichniss | Kommentar

Created by unroff & hp-tools. © somebody (See intro for details). All Rights Reserved. Last modified 11/5/97