4.3BSD-UWisc/man/cat3/printf.3s




PRINTF(3S)          UNIX Programmer's Manual           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;

     #include <varargs.h>
     _doprnt(format, args, stream)
     char *format;
     va_list *args;
     FILE *stream;

DESCRIPTION
     _P_r_i_n_t_f places output on the standard output stream stdout.
     _F_p_r_i_n_t_f places output on the named output _s_t_r_e_a_m.  _S_p_r_i_n_t_f
     places `output' in the string _s, followed by the character
     `\0'.  All of these routines work by calling the internal
     routine _doprnt, using the variable-length argument facili-
     ties of _v_a_r_a_r_g_s(3).

     Each of these functions converts, formats, and prints its
     arguments after the first under control of the first argu-
     ment.  The first argument is a character string which con-
     tains two types of objects: plain characters, which are sim-
     ply copied to the output stream, and conversion specifica-
     tions, each of which causes conversion and printing of the
     next successive _a_r_g _p_r_i_n_t_f.

     Each conversion specification is introduced by the character
     %.  The remainder of the conversion specification includes
     in the following order

     o+    Zero or more of following flags:

          o+    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 out-
               put 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



Printed 12/27/86          June 5, 1986                          1






PRINTF(3S)          UNIX Programmer's Manual           PRINTF(3S)



               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 conver-
               sions 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.

          o+    a minus sign `-' which specifies _l_e_f_t _a_d_j_u_s_t_m_e_n_t
               of the converted value in the indicated field;

          o+    a `+' character specifying that there should
               always be a sign placed before the number when
               using signed conversions.

          o+    a space specifying that a blank should be left
               before a positive number during a signed conver-
               sion.  A `+' overrides a space if both are used.

     o+    an optional digit string specifying a _f_i_e_l_d _w_i_d_t_h; 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;

     o+    an optional period `.' which serves to separate the
          field width from the next digit string;

     o+    an optional digit string specifying a _p_r_e_c_i_s_i_o_n 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;

     o+    the character l specifying that a following d, o, x, or
          u corresponds to a long integer _a_r_g.

     o+    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 _a_r_g supplies the field
     width or precision.

     The conversion characters and their meanings are

     dox  The integer _a_r_g is converted to decimal, octal, or hex-
          adecimal notation respectively.

     f    The float or double _a_r_g is converted to decimal nota-
          tion in the style `[-]ddd.ddd' where the number of d's



Printed 12/27/86          June 5, 1986                          2






PRINTF(3S)          UNIX Programmer's Manual           PRINTF(3S)



          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 expli-
          citly 0, no digits and no decimal point are printed.

     e    The float or double _a_r_g is converted in the style
          `[-]d.ddde+_dd' where there is one digit before the
          decimal point and the number after is equal to the pre-
          cision specification for the argument; when the preci-
          sion is missing, 6 digits are produced.

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

     c    The character _a_r_g is printed.

     s    _A_r_g 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.

     u    The unsigned integer _a_r_g is converted to decimal and
          printed (the result will be in the range 0 through MAX-
          UINT, where MAXUINT equals 4294967295 on a VAX-11 and
          65535 on a PDP-11).

     %    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 _p_r_i_n_t_f are printed by _p_u_t_c(3S).

     Examples
     To print a date and time in the form `Sunday, July 3,
     10:02', where _w_e_e_k_d_a_y and _m_o_n_t_h 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(3S), scanf(3S), ecvt(3)





Printed 12/27/86          June 5, 1986                          3






PRINTF(3S)          UNIX Programmer's Manual           PRINTF(3S)



BUGS
     Very wide fields (>128 characters) fail.





















































Printed 12/27/86          June 5, 1986                          4