Xinu7/man/man3/printf.doc




PRINTF(3)           Xinu Programmer's Manual            PRINTF(3)



NAME
     printf, fprintf, sprintf - formatted output conversion

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

     fprintf(dev, format [, arg ] ...  )
     int dev;
     char *format;

     sprintf(s, format [, arg ] ...  )
     char *s, format;

DESCRIPTION
     _P_r_i_n_t_f writes formatted output on device _C_O_N_S_O_L_E.  _F_p_r_i_n_t_f
     writes formatted output on the named output _d_e_v_i_c_e.  _S_p_r_i_n_t_f
     places formatted `output' in the string _s, followed by the
     character `\0'.

     Each of these functions converts, formats, and prints its
     arguments after the format under control of the format argu-
     ment.  The format 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.

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

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

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

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

     -    an optional digit string specifying a _p_r_e_c_i_s_i_o_n which
          specifies the maximum number of characters to be
          printed from a string;

     -    the character l specifying that a following d, o, x, or
          u corresponds to a long integer _a_r_g. (A capitalized
          conversion code accomplishes the same thing.)



Version 6b               Printed 1/12/87                        1






PRINTF(3)           Xinu Programmer's Manual            PRINTF(3)



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

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

     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
          65535 on the LSI-11 for normal integers and 0 through
          4294967295 for long integers).

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

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

SEE ALSO
     putc(2), scanf(3)

BUGS
     Very wide fields (>128 characters) fail.









Version 6b               Printed 1/12/87                        2