PRINTF(3S) UNIX Programmer's Manual PRINTF(3S) NAME printf, fprintf, sprintf - formatted output conversion SYNOPSIS #include printf(format [, arg ] ... ) char *format; fprintf(stream, format [, arg ] ... ) FILE *stream; char *format; char *sprintf(s, format [, arg ] ... ) char *s, format; DESCRIPTION _P_r_i_n_t_f places output on the standard output stream _s_t_d_o_u_t. _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'. 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 %. Following the %, there may be - 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 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; Printed 7/31/83 1 PRINTF(3S) UNIX Programmer's Manual PRINTF(3S) - 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.) - 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 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. 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 to 65535). % Print a `%'; no argument is converted. In no case does a nonexistent 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). Printed 7/31/83 2 PRINTF(3S) UNIX Programmer's Manual PRINTF(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 ecvt(3), putc(3S), scanf(3S) BUGS Very wide fields (>128 characters) fail. Printed 7/31/83 3