Annotation of researchv10dc/man/adm/man3/printf.3, revision 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.