PRINTF(1) UNIX Programmer's Manual PRINTF(1) NAME printf - formatted output SYNOPSIS printf format [ arguments ... ] DESCRIPTION Printf formats and prints its arguments, after the first, under control of the _f_o_r_m_a_t. The _f_o_r_m_a_t is a character string which contains three types of objects: plain charac- ters, which are simply copied to standard output, character escape sequences which are converted and copied to the stan- dard output, and format specifications, each of which causes printing of the next successive _a_r_g_u_m_e_n_t. The _a_r_g_u_m_e_n_t_s after the first are treated as strings if the corresponding format is either c or s; otherwise it is evaluated as a C constant, with the following extensions: o+ A leading plus or minus sign is allowed. o+ If the leading character is a single or double quote, or not a digit, plus, or minus sign, the value is the ASCII code of the next character. The format string is reused as often as necessary to satisfy the _a_r_g_u_m_e_n_t_s. Any extra format specifications are evaluated with zero or the null string. Character escape sequences are in backslash notation as defined in the draft proposed ANSI C Standard X3J11. The characters and their meanings are as follows: \a Write a character. \b Write a character. \f Write a character. \n Write a character. \r Write a character. \t Write a character. \v Write a character. \' Write a character. \\ Write a backslash character. \_n_u_m Write an 8-bit character whose ASCII value is the Printed 11/26/99 May 2, 1995 1 PRINTF(1) UNIX Programmer's Manual PRINTF(1) 1-, 2-, or 3-digit octal number _n_u_m. Each format specification is introduced by the percent char- acter (``%''). The remainder of the format specification includes, in the following order: "Zero or more of the following flags:" # A `#' character specifying that the value should be printed in an ``alternate form''. For c, d, and s, formats, this option has no effect. For the o formats the precision of the number is increased to force the first character of the out- put string to a zero. For the x (X) format, a non-zero result has the string 0x (0X) prepended to it. For e, E, f, g, and G, formats, 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 formats if a digit follows the decimal point). For g and G formats, 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 output in the indicated field; + A `+' character specifying that there should always be a sign placed before the number when using signed formats. ` ' A space specifying that a blank should be left before a positive number for a signed format. A `+' overrides a space if both are used; 0 A zero `0' character indicating that zero-padding should be used rather than blank-padding. A `-' overrides a `0' if both are used; Field Width: An optional digit string specifying a _f_i_e_l_d _w_i_d_t_h; if the output string 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 (note that a leading zero is a flag, but an embedded zero is part of a field width); Precision: 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 Printed 11/26/99 May 2, 1995 2 PRINTF(1) UNIX Programmer's Manual PRINTF(1) point, for e and f formats, or the maximum number of characters to be printed from a string; if the digit string is missing, the precision is treated as zero; Format: A character which indicates the type of format to use (one of diouxXfwEgGcs). A field width or precision may be * instead of a digit string. In this case an _a_r_g_u_m_e_n_t supplies the field width or precision. The format characters and their meanings are: diouXx The _a_r_g_u_m_e_n_t is printed as a signed decimal (d or i), unsigned decimal, unsigned octal, or unsigned hexadecimal (X or x), respectively. f The _a_r_g_u_m_e_n_t is printed in the style `[-]ddd.ddd' where the number of d's after the decimal point is equal to the precision specification for the argu- ment. If the precision is missing, 6 digits are given; if the precision is explicitly 0, no digits and no decimal point are printed. eE The _a_r_g_u_m_e_n_t is printed in the style e where there is one digit before the decimal point and the number after is equal to the precision specifica- tion for the argument; when the precision is miss- ing, 6 digits are produced. An upper-case E is used for an `E' format. gG The _a_r_g_u_m_e_n_t is printed in style f or in style e (E) whichever gives full precision in minimum space. c The first character of _a_r_g_u_m_e_n_t is printed. s Characters from the string _a_r_g_u_m_e_n_t are printed until the end is reached or until the number of characters indicated by the precision specifica- tion is reached; however if the precision is 0 or missing, all characters in the string are printed. % Print a `%'; no argument is used. 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. Printed 11/26/99 May 2, 1995 3 PRINTF(1) UNIX Programmer's Manual PRINTF(1) RETURN VALUES Printf exits 0 on success, 1 on failure. SEE ALSO _p_r_i_n_t_f(3) HISTORY The printf command appeared in 4.3-Reno. It is modeled after the standard library function, printf(3). BUGS Since the floating point numbers are translated from ASCII to floating-point and then back again, floating-point preci- sion may be lost. ANSI hexadecimal character constants were deliberately not provided. Printed 11/26/99 May 2, 1995 4