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