PRINTF(3S) UNIX Programmer's Manual PRINTF(3S) NAME printf, fprintf, sprintf, vfprintf, vsprintf - formatted output conversion SYNOPSIS #include char *printf(format [, arg ] ... ) char *format; char *fprintf(stream, format [, arg ] ... ) FILE *stream; char *format; int sprintf(s, format [, arg ] ... ) char *s, *format; #include char *vprintf(format, args) char *format; va_list args; char *vfprintf(stream, format, args) FILE *stream; char *format; va_list args; int vsprintf(s, format, args) char *s, *format; va_list args; 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'. Alternate forms, in which the arguments have already been captured using the variable-length argument facilities of _v_a_r_a_r_g_s(3), are available under the names _v_p_r_i_n_t_f, _v_f_p_r_i_n_t_f, and _v_s_p_r_i_n_t_f. 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 Printed 11/26/99 August 10, 1988 1 PRINTF(3S) UNIX Programmer's Manual PRINTF(3S) 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+ 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, followed by an optional digit string giving 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 signed decimal, unsigned octal, or unsigned hexadecimal 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. Printed 11/26/99 August 10, 1988 2 PRINTF(3S) UNIX Programmer's Manual PRINTF(3S) 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 as by _p_u_t_c(3S). RETURN VALUE The functions all return the number of characters printed, or -1 if an error occurred. 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) BUGS Very wide fields (>300 characters) fail. Only _s_p_r_i_n_t_f and _v_s_p_r_i_n_t_f return a count of characters transferred. The functions still supports %_D, %_O, %_U and %_X. Do not use these formats, as they will be disappearing real soon now. Printed 11/26/99 August 10, 1988 3