printf(3int)printf(3int)Name
printf, fprintf, sprintf - print formatted output
Syntax
#include <stdio.h>
int printf ( format [, arg ] ... )
char *format;
int fprintf ( stream, format [, arg ] ... )
FILE *stream;
char *format;
int sprintf ( s, format [, arg ] ... )
char *s, *format;
Description
The international functions and are similar to the standard I/O func‐
tions. The difference is that the international functions allow you to
use the %digit$ conversion character in place of the % character you
use in the standard I/O functions. The digit is a decimal digit n from
1 to 9. The international functions apply conversions to the n th
argument in the argument list, rather than to the next unused argument.
You can use the % conversion character in the international functions.
However, you cannot mix the % conversion character with the %digit$
conversion character in a single call.
You can indicate a field width or precision by an asterisk (*) instead
of a digit string in format strings containing the % conversion charac‐
ter. If you use an asterisk, you can supply an integer arg that speci‐
fies the field width or precision. In format strings containing the
%digit$ conversion character, you can indicate field width or precision
by the sequence *digit$. You use a decimal digit from 1 to 9 to indi‐
cate which argument contains an integer that specifies the field width
or precision.
The conversion characters and their meanings are identical to
You must use each digit argument at least once.
In all cases, the radix character uses is defined by the last success‐
ful call to category If category has not been called successfully or if
the radix character is undefined, the radix character defaults to a
period (.).
International Environment
LC_NUMERIC If this environment is set and valid, uses the interna‐
tional language database named in the definition to
determine radix character rules.
LANG If this environment variable is set and valid uses the
international language database named in the definition
to determine collation and character classification
rules. If is defined, its definition supercedes the
definition of LANG.
Examples
The following example illustrates using an argument to specify field
width:
printf ("%1$d:%2$.*3$d:%4$.*3$d\n",
hour, min, precision, sec);
The format string *3$ indicates that the third argument, which is named
precision, contains the integer field width specification.
To print the language independent date and time format use the follow‐
ing statement:
printf (format, weekday, month, day, hour, min);
For American use, format could be a pointer to the following string:
"%1$s, %2$s %3$d, %4$d:%5$.2d\n"
This string gives the following date format:
Sunday, July 3, 10:02
For use in a German environment, format could be a pointer to the fol‐
lowing string:
"%1$s, %3$d. %2$s, %4$d:%5$.2d\n"
This string gives the following date format:
Sonntag, 3. Juli, 10:02
Return Values
and return zero for success and EOF for failure. The subroutine
returns its first argument for success and EOF for failure.
In the System V and POSIX environments, and return the number of char‐
acters transmitted for success. The function ignores the null termina‐
tor (\0) when calculating the number of characters transmitted. If an
output error occurs, these routines return a negative value.
See Alsointro(3int), setlocale(3), scanf(3int), printf(3s), putc(3s),
scanf(3s), stdio(3s)
Guide to Developing International Software
printf(3int)