|
|
1.1 ! root 1: .\" Copyright (c) 1989, 1990 The Regents of the University of California. ! 2: .\" All rights reserved. ! 3: .\" ! 4: .\" Redistribution and use in source and binary forms are permitted provided ! 5: .\" that: (1) source distributions retain this entire copyright notice and ! 6: .\" comment, and (2) distributions including binaries display the following ! 7: .\" acknowledgement: ``This product includes software developed by the ! 8: .\" University of California, Berkeley and its contributors'' in the ! 9: .\" documentation or other materials provided with the distribution and in ! 10: .\" all advertising materials mentioning features or use of this software. ! 11: .\" Neither the name of the University nor the names of its contributors may ! 12: .\" be used to endorse or promote products derived from this software without ! 13: .\" specific prior written permission. ! 14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 17: .\" ! 18: .\" @(#)printf.1 5.8 (Berkeley) 7/24/90 ! 19: .\" ! 20: .Dd July 24, 1990 ! 21: .Dt PRINTF 1 ! 22: .AT 1 ! 23: .Sh NAME ! 24: .Nm printf ! 25: .Nd formatted output ! 26: .Sh SYNOPSIS ! 27: .Pp ! 28: .Nm printf format ! 29: .Op arguments ... ! 30: .Sh DESCRIPTION ! 31: .Nm Printf ! 32: formats and prints its arguments, after the first, under control ! 33: of the ! 34: .Ar format . ! 35: The ! 36: .Ar format ! 37: is a character string which contains three types of objects: plain characters, ! 38: which are simply copied to standard output, character escape sequences which ! 39: are converted and copied to the standard output, and format specifications, ! 40: each of which causes printing of the next successive ! 41: .Ar argument . ! 42: .Pp ! 43: The ! 44: .Ar arguments ! 45: after the first are treated as strings if the corresponding format is ! 46: either ! 47: .Cm c ! 48: or ! 49: .Cm s ; ! 50: otherwise it is evaluated as a C constant, with the following extensions: ! 51: .Pp ! 52: .Df I ! 53: A leading plus or minus sign is allowed. ! 54: .br ! 55: If the leading character is a single or double quote, or not a digit, ! 56: plus, or minus sign, the value is the ASCII code of the next character. ! 57: .De ! 58: .Pp ! 59: The format string is reused as often as necessary to satisfy the ! 60: .Ar arguments . ! 61: Any extra format specifications are evaluated with zero or the null ! 62: string. ! 63: .Pp ! 64: Character escape sequences are in backslash notation as defined in the ! 65: draft proposed ANSI C Standard X3J11. The characters and their meanings ! 66: are as follows: ! 67: .Tw Ds ! 68: .Tp Cm \ea ! 69: Write a <bell> character. ! 70: .Tp Cm \eb ! 71: Write a <backspace> character. ! 72: .Tp Cm \ef ! 73: Write a <form-feed> character. ! 74: .Tp Cm \en ! 75: Write a <new-line> character. ! 76: .Tp Cm \er ! 77: Write a <carriage return> character. ! 78: .Tp Cm \et ! 79: Write a <tab> character. ! 80: .Tp Cm \ev ! 81: Write a <vertical tab> character. ! 82: .Tp Cm \e\' ! 83: Write a <single quote> character. ! 84: .Tp Cm \e\e ! 85: Write a backslash character. ! 86: .Tp Cx Cm \e ! 87: .Ar num ! 88: .Cx ! 89: Write an 8-bit character whose ASCII value is the 1-, 2-, or 3-digit ! 90: octal number ! 91: .Ar num . ! 92: .Tp ! 93: .Pp ! 94: Each format specification is introduced by the percent character ! 95: (``%''). ! 96: The remainder of the format specification includes, in the ! 97: following order: ! 98: .Pp ! 99: Zero or more of the following flags: ! 100: .Pp ! 101: .Ds I ! 102: .Tw Ds ! 103: .Tp Cm # ! 104: A `#' character ! 105: specifying that the value should be printed in an ``alternate form''. ! 106: For ! 107: .Cm c , ! 108: .Cm d , ! 109: and ! 110: .Cm s , ! 111: formats, this option has no effect. For the ! 112: .Cm o ! 113: formats the precision of the number is increased to force the first ! 114: character of the output string to a zero. For the ! 115: .Cm x ! 116: .Pq Cm X ! 117: format, a non-zero result has the string ! 118: .Li 0x ! 119: .Pq Li 0X ! 120: prepended to it. For ! 121: .Cm e , ! 122: .Cm E , ! 123: .Cm f , ! 124: .Cm g , ! 125: and ! 126: .Cm G , ! 127: formats, the result will always contain a decimal point, even if no ! 128: digits follow the point (normally, a decimal point only appears in the ! 129: results of those formats if a digit follows the decimal point). For ! 130: .Cm g ! 131: and ! 132: .Cm G ! 133: formats, trailing zeros are not removed from the result as they ! 134: would otherwise be; ! 135: .Tp Cm \&\- ! 136: A minus sign `\-' which specifies ! 137: .Em left adjustment ! 138: of the output in the indicated field; ! 139: .Tp Cm \&+ ! 140: A `+' character specifying that there should always be ! 141: a sign placed before the number when using signed formats. ! 142: .Tp Sq \&\ \& ! 143: A space specifying that a blank should be left before a positive number ! 144: for a signed format. A `+' overrides a space if both are used; ! 145: .Tp Cm \&0 ! 146: A zero `0' character indicating that zero-padding should be used ! 147: rather than blank-padding. A `\-' overrides a `0' if both are used; ! 148: .Tp ! 149: .De ! 150: .Pp ! 151: .Tw Ds ! 152: .Tp Field Width: ! 153: An optional digit string specifying a ! 154: .Em field width ; ! 155: if the output string has fewer characters than the field width it will ! 156: be blank-padded on the left (or right, if the left-adjustment indicator ! 157: has been given) to make up the field width (note that a leading zero ! 158: is a flag, but an embedded zero is part of a field width); ! 159: .Tp Precision: ! 160: An optional period, ! 161: .Sq Cm \&.\& , ! 162: followed by an optional digit string giving a ! 163: .Em precision ! 164: which specifies the number of digits to appear after the decimal point, ! 165: for ! 166: .Cm e ! 167: and ! 168: .Cm f ! 169: formats, or the maximum number of characters to be printed ! 170: from a string; if the digit string is missing, the precision is treated ! 171: as zero; ! 172: .Tp Format: ! 173: A character which indicates the type of format to use (one of ! 174: .Cm diouxXfwEgGcs ) . ! 175: .Tp ! 176: .Pp ! 177: A field width or precision may be ! 178: .Sq Cm \&* ! 179: instead of a digit string. ! 180: In this case an ! 181: .Ar argument ! 182: supplies the field width or precision. ! 183: .Pp ! 184: The format characters and their meanings are: ! 185: .Tw Fl ! 186: .Tp Cm diouXx ! 187: The ! 188: .Ar argument ! 189: is printed as a signed decimal (d or i), unsigned decimal, unsigned octal, ! 190: or unsigned hexadecimal (X or x), respectively. ! 191: .Tp Cm f ! 192: The ! 193: .Ar argument ! 194: is printed in the style `[\-]ddd.ddd' where the number of d's ! 195: after the decimal point is equal to the precision specification for ! 196: the argument. ! 197: If the precision is missing, 6 digits are given; if the precision ! 198: is explicitly 0, no digits and no decimal point are printed. ! 199: .Tp Cm eE ! 200: The ! 201: .Ar argument ! 202: is printed in the style ! 203: .Cx `[-]d.ddd ! 204: .Cm e ! 205: .Cx \(+-dd\' ! 206: .Cx ! 207: where there ! 208: is one digit before the decimal point and the number after is equal to ! 209: the precision specification for the argument; when the precision is ! 210: missing, 6 digits are produced. ! 211: An upper-case E is used for an `E' format. ! 212: .Tp Cm gG ! 213: The ! 214: .Ar argument ! 215: is printed in style ! 216: .Cm f ! 217: or in style ! 218: .Cm e ! 219: .Pq Cm E ! 220: whichever gives full precision in minimum space. ! 221: .Tp Cm c ! 222: The first character of ! 223: .Ar argument ! 224: is printed. ! 225: .Tp Cm s ! 226: Characters from the string ! 227: .Ar argument ! 228: are printed until the end is reached or until the number of characters ! 229: indicated by the precision specification is reached; however if the ! 230: precision is 0 or missing, all characters in the string are printed. ! 231: .Tp Cm \&% ! 232: Print a `%'; no argument is used. ! 233: .Tp ! 234: .Pp ! 235: In no case does a non-existent or small field width cause truncation of ! 236: a field; padding takes place only if the specified field width exceeds ! 237: the actual width. ! 238: .Sh RETURN VALUE ! 239: .Nm Printf ! 240: exits 0 on success, 1 on failure. ! 241: .Sh SEE ALSO ! 242: .Xr printf 3 ! 243: .Sh HISTORY ! 244: .Nm Printf ! 245: as a command, appears in 4.3+Reno BSD. It is modeled ! 246: after the standard library function, ! 247: .Xr printf 3 . ! 248: .Sh BUGS ! 249: Since the number is translated from ASCII to floating-point, and ! 250: then back again, floating-point precision may be lost. ! 251: .Pp ! 252: ANSI hexadecimal character constants were deliberately not provided.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.