Annotation of researchv10dc/man/adm/man3/printf.3, revision 1.1.1.1

1.1       root        1: .TH PRINTF 3S
                      2: .CT 2 file_io
                      3: .SH NAME
                      4: printf, fprintf, sprintf, snprintf \(mi print formatted output
                      5: .SH SYNOPSIS
                      6: .nf
                      7: .B "#include <stdio.h>"
                      8: .PP
                      9: .B "int printf(char *format, ... );
                     10: .PP
                     11: .B "int fprintf (FILE *stream, char *format, ... );
                     12: .PP
                     13: .B "int sprintf (char *s, char *format, ... );
                     14: .PP
                     15: .B "int snprintf (char *s, int len, char *format, ... );
                     16: .fi
                     17: .SH DESCRIPTION
                     18: .I Printf
                     19: places output on the standard output stream
                     20: .IR stdout .
                     21: .I Fprintf
                     22: places output on the named output
                     23: .IR stream .
                     24: .I Sprintf
                     25: places output
                     26: followed by the null character
                     27: .RB ( \e0 ),
                     28: in consecutive bytes starting at
                     29: .IR s ;
                     30: it is the user's responsibility to ensure that
                     31: enough storage is available.
                     32: .I Snprintf
                     33: corresponds to
                     34: .IR sprintf
                     35: except that no more than
                     36: .IR len
                     37: bytes are placed into
                     38: .IR s .
                     39: Each function returns the number of characters
                     40: transmitted (not including the
                     41: .B \e0
                     42: in the case of
                     43: .IR sprintf ),
                     44: or
                     45: a negative value if an output error was encountered.
                     46: .PP
                     47: Each of these functions
                     48: converts, formats, and prints its
                     49: trailing arguments
                     50: under control of a
                     51: .IR format 
                     52: string.
                     53: The
                     54: .I format
                     55: contains two types of objects:
                     56: plain characters, which are simply copied to the
                     57: output stream,
                     58: and conversion specifications,
                     59: each of which results in fetching of
                     60: zero or more
                     61: arguments.
                     62: The results are undefined if there are arguments of the
                     63: wrong type or too few
                     64: arguments for the format.
                     65: If the format is exhausted while
                     66: arguments remain, the excess
                     67: are ignored.
                     68: .PP
                     69: Each conversion specification is introduced by
                     70: the character
                     71: .BR % .
                     72: After the
                     73: .BR % ,
                     74: the following
                     75: appear in sequence:
                     76: .PP
                     77: .RS
                     78: Zero or more
                     79: .IR flags ,
                     80: which modify the meaning of
                     81: the conversion specification.
                     82: .PP
                     83: An optional decimal digit string specifying a minimum
                     84: .IR "field width" .
                     85: If the converted value has fewer characters
                     86: than the field width,
                     87: it is padded to the field width.
                     88: When the width specification begins with zero, padding is
                     89: with leading zeros.
                     90: Otherwise padding is with leading spaces (trailing spaces,
                     91: with the left-adjustment flag 
                     92: .LR - ,
                     93: described below) to the field width.
                     94: .PP
                     95: A
                     96: .I precision\^
                     97: that gives
                     98: the minimum number of digits to appear for the
                     99: .BR d ,
                    100: .BR o ,
                    101: .BR u ,
                    102: .BR x ,
                    103: or
                    104: .B X
                    105: conversions,
                    106: the number of digits to appear after the
                    107: decimal point for the
                    108: .B e
                    109: and
                    110: .B f
                    111: conversions,
                    112: the maximum number of significant digits
                    113: for the
                    114: .B g
                    115: conversion,
                    116: or the maximum number of characters
                    117: to be printed from a string in
                    118: .B s
                    119: conversion.
                    120: The precision takes the form of a period
                    121: .RB ( \&. )
                    122: followed by a decimal digit string;
                    123: a null digit string is treated as zero.
                    124: .PP
                    125: An optional
                    126: .B l
                    127: (ell) specifying that a following
                    128: .BR d ,
                    129: .BR o ,
                    130: .BR u ,
                    131: .BR x ,
                    132: or
                    133: .B X
                    134: conversion character applies to a long
                    135: integer
                    136: .IR arg .
                    137: An
                    138: .B l
                    139: before any other conversion character is ignored.
                    140: .PP
                    141: A character that indicates the type of
                    142: conversion to be applied.
                    143: .RE
                    144: .PP
                    145: A field width or precision may be
                    146: indicated by an asterisk
                    147: .RB ( * )
                    148: or an exclamation point
                    149: .RB ( ! )
                    150: instead of a digit string.
                    151: In this case, an integer
                    152: .I arg\^
                    153: supplies
                    154: the field width or precision.
                    155: .PP
                    156: The flag characters and their meanings are:
                    157: .PD 0
                    158: .TP 10
                    159: .B \-
                    160: The result of the conversion is left-justified within the field.
                    161: .TP
                    162: .B +
                    163: The result of a signed
                    164: conversion always begins with a sign
                    165: .RB ( +
                    166: or
                    167: .BR - ).
                    168: .TP
                    169: blank
                    170: If the first character of a signed conversion is not a sign, a blank
                    171: is prefixed to the result.
                    172: This implies that if the blank and
                    173: .B +
                    174: flags both appear, the blank flag is ignored.
                    175: .TP
                    176: .B #
                    177: This flag specifies that the value is to be converted
                    178: to an ``alternate form.''
                    179: For
                    180: .BR c ,
                    181: .BR d ,
                    182: .BR s ,
                    183: and
                    184: .B u
                    185: conversions, the flag has no effect.
                    186: For
                    187: .B o
                    188: conversion, it increases the precision to force
                    189: the first digit of the result to be a zero.
                    190: For
                    191: .B x or X
                    192: conversion, a non-zero result has
                    193: .B 0x or 0X
                    194: prefixed to it.
                    195: For
                    196: .BR e ,
                    197: .BR E ,
                    198: .BR f ,
                    199: .BR g ,
                    200: and
                    201: .B G
                    202: conversions, the result always contains a decimal point,
                    203: even if no digits follow the point (normally, a decimal point
                    204: appears in the result of these conversions only if a digit
                    205: follows it).
                    206: For
                    207: .B g
                    208: and
                    209: .B G
                    210: conversions, trailing zeros are
                    211: .I not\^
                    212: be removed from the result
                    213: as they normally are.
                    214: .PD
                    215: .PP
                    216: The conversion characters
                    217: and their meanings are:
                    218: .PP
                    219: .PD 0
                    220: .TP 10
                    221: \fLd\fP,\fLo\fP,\fLu\fP,\fLx\fP,\fLX\fP
                    222: The integer
                    223: .I arg\^
                    224: is converted to signed decimal,
                    225: unsigned octal, decimal, or
                    226: hexadecimal notation
                    227: .RB ( x
                    228: and
                    229: .BR X ),
                    230: respectively;
                    231: the letters
                    232: .B abcdef
                    233: are used for
                    234: .B x
                    235: conversion and the letters
                    236: .B ABCDEF
                    237: for
                    238: .B X
                    239: conversion.
                    240: The precision specifies the minimum number of digits
                    241: to appear; if the value being converted can be represented
                    242: in fewer digits, it is expanded with leading zeros.
                    243: (For compatibility with other versions of
                    244: .IR printf ,
                    245: a field width with a leading zero
                    246: results in padding with leading zeros.
                    247: This does not imply an octal value for the field width.)
                    248: The default precision is 1.
                    249: The result of converting a zero value with a precision
                    250: of zero is a null string.
                    251: .TP
                    252: .BR f
                    253: The float or double
                    254: .I arg\^
                    255: is converted to decimal notation
                    256: in the style
                    257: [\fB-\fR]\fId\fB.\fIddd\fR,
                    258: where the number of digits after the decimal point
                    259: is equal to the precision specification.
                    260: If the precision
                    261: is missing,
                    262: six digits are output;
                    263: if the precision is explicitly
                    264: .LR 0 ,
                    265: no decimal point appears.
                    266: .TP
                    267: .BR e , E
                    268: The float or double
                    269: .I arg\^
                    270: is converted in the style
                    271: [\fB-\fR]\fId\fB.\fIddd\fBe\(+-\fIdd\fR,
                    272: where there is one digit before the decimal point and
                    273: the number of digits after it is equal to the
                    274: precision;
                    275: when the precision is missing,
                    276: six digits are produced;
                    277: if the precision is zero, no decimal point appears.
                    278: The
                    279: .B E
                    280: format code produces a number with
                    281: .B E
                    282: instead of
                    283: .B e
                    284: introducing the exponent.
                    285: The exponent always contains at least two digits.
                    286: .TP
                    287: .BR g , G
                    288: The float or double
                    289: .I arg\^
                    290: is printed in style
                    291: .BR f
                    292: or
                    293: .BR e
                    294: (or in style
                    295: .B E
                    296: in the case of a
                    297: .B G
                    298: format code),
                    299: with the precision specifying the number of significant digits.
                    300: The style used depends on the value converted:
                    301: style
                    302: .B e
                    303: is used only if the exponent resulting from
                    304: the conversion is less than -4
                    305: or greater than the precision.
                    306: Trailing zeros are removed from the result; a decimal point
                    307: appears only if it is followed by a digit.
                    308: .TP
                    309: .B c
                    310: The character
                    311: argument is printed.
                    312: .TP
                    313: .B s
                    314: The
                    315: argument is taken to be a string (character pointer)
                    316: and characters from the string are printed until
                    317: a null character
                    318: .RB ( \e0 )
                    319: is encountered or
                    320: the number of characters indicated by the precision
                    321: specification is reached.
                    322: If the precision is missing, it is taken to be infinite, so
                    323: all characters up to the first null character are printed.
                    324: A
                    325: zero
                    326: value for
                    327: the argument yields undefined results.
                    328: (For compatibility with other versions of
                    329: .IR printf ,
                    330: a field width with
                    331: a leading zero results in zero-padding the string instead
                    332: of blank-padding it.
                    333: This does not imply an octal value for the field width.)
                    334: .TP
                    335: .B %
                    336: Print a
                    337: .BR % ;
                    338: no argument is converted.
                    339: .PD
                    340: .PP
                    341: In no case does a non-existent or small field width
                    342: cause truncation of a field;
                    343: if the result of a conversion is wider than the field width,
                    344: the field is simply expanded to contain the conversion result.
                    345: Characters generated by
                    346: .I printf\^
                    347: and
                    348: .I fprintf\^
                    349: are printed as if
                    350: .IR putc
                    351: had been called; see
                    352: .IR getc (3).
                    353: .SH EXAMPLES
                    354: .TP
                    355: .L
                    356: printf("%s, %s %d, %d:%.2d", weekday, month, day, hour, min);
                    357: Print a date and time in the form `Sunday, July 3, 10:02',
                    358: where
                    359: .I weekday\^
                    360: and
                    361: .I month\^
                    362: are pointers to null-terminated strings.
                    363: .TP
                    364: .L
                    365: printf("pi = %.5f", 4*atan(1.0));
                    366: Print
                    367: .if n .I pi\^
                    368: .if t \(*p
                    369: to 5 decimal places.
                    370: .SH SEE ALSO
                    371: .IR ecvt (3),
                    372: .IR scanf (3),
                    373: .IR stdio (3),
                    374: .IR print (3)
                    375: .SH BUGS
                    376: The
                    377: .L !
                    378: indicator for field width is nonstandard.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.