home | help
PRINTF(3S)							      PRINTF(3S)

NAME
     printf, fprintf, sprintf - formatted output conversion

SYNOPSIS
     #include <stdio.h>

     printf(format [, arg ] ...  )
     char *format;

     fprintf(stream, format [, arg ] ...  )
     FILE *stream;
     char *format;

     sprintf(s, format [, arg ] ...  )
     char *s, 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, formats, and prints its arguments after
     the first under control of the first argument.  The  first  argument  is  a
     character	string	which  contains  two types of objects: plain characters,
     which are simply copied to the output  stream,  and  conversion  specifica-
     tions,  each of which causes conversion and printing of the next successive
     arg printf.

     Each conversion specification is introduced by the character %.   Following
     the %, there may be

     -	    an	optional  minus  sign `-' which specifies left adjustment of the
	    converted value in the indicated field;

     -	    an optional digit string specifying a field width; if the  converted
	    value  has	fewer  characters than the field width it will be blank-
	    padded on the left (or right, if the left-adjustment  indicator  has
	    been  given)  to  make up the field width; if the field width begins
	    with a zero, zero-padding will be done instead of blank-padding;

     -	    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;

     -	    the  character  l  specifying  that a following d, o, x, or u corre-
	    sponds to a long integer arg.  (A capitalized conversion code accom-
	    plishes the same thing.)

     -	    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

     dox    The integer arg is converted to decimal, octal, or hexadecimal nota-
	    tion respectively.

     f	    The  float	or  double  arg  is converted to decimal notation in the
	    style `[-]ddd.ddd' where the number of d's after the  decimal  point
	    is	equal  to  the precision specification for the argument.  If the
	    precision is missing, 6 digits are given; if the  precision  is  ex-
	    plicitly 0, no digits and no decimal point are printed.

     e	    The  float	or double arg is converted in the style `[-]d.ddde+/-dd'
	    where there is one digit before the decimal point and the number af-
	    ter is equal to the precision specification for the  argument;  when
	    the precision is missing, 6 digits are produced.

     g	    The  float	or  double  arg is printed in style d, in style f, or in
	    style e, whichever gives full precision in minimum space.

     c	    The character arg is printed.  Null characters are ignored.

     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; how-
	    ever  if  the  precision is 0 or missing all characters up to a null
	    are printed.

     u	    The unsigned integer arg is converted to decimal  and  printed  (the
	    result will be in the range 0 to 65535).

     %	    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(3).

     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));

SEE ALSO
     putc(3), scanf(3), ecvt(3)

BUGS
     Very wide fields (>128 characters) fail.

								      PRINTF(3S)

home | help