PRINTF(3S) PRINTF(3S) NAME printf, fprintf, sprintf - formatted output conversion SYNOPSIS #include printf(format [, arg ] ... ) char *format; fprintf(stream, format [, arg ] ... ) FILE *stream; char *format; sprintf(s, format [, arg ] ... ) char *s, format; #include _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 facilities 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 argument. The first argu‐ ment is a character string which contains two types of objects: plain characters, which are simply copied to the output stream, and conver‐ sion specifications, 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 ·· Zero or more of following flags: ·· a ‘#’ character specifying that the value should be con‐ verted to an ‘‘alternate form’’. For c, d, s, and u, conversions, this option has no effect. For o conver‐ sions, the precision of the number is increased to force the first character of the output 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 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 conversions 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. ·· 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; ·· a ‘+’ character specifying that there should always be a sign placed before the number when using signed conver‐ sions. ·· a space specifying that a blank should be left before a positive number during a signed conversion. A ‘+’ over‐ rides a space if both are used. ·· an optional digit string specifying a _f_i_e_l_d _w_i_d_t_h_; if the con‐ verted 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; ·· the character l specifying that a following d, o, x, or u corre‐ sponds to a long integer _a_r_g. ·· 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 hexadecimal notation respectively. f The float or double _a_r_g 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 preci‐ sion is explicitly 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 precision specification for the argument; when the precision 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 MAXUINT, 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) BUGS Very wide fields (>128 characters) fail. 7th Edition June 5, 1986 PRINTF(3S)