|
|
1.1 ! root 1: .TH PRINTF 3S "1 April 1981" ! 2: .SH NAME ! 3: printf, fprintf, sprintf \- formatted output conversion ! 4: .SH SYNOPSIS ! 5: .B #include <stdio.h> ! 6: .PP ! 7: .B printf(format ! 8: .RB [ , ! 9: arg ] ... ! 10: .B ) ! 11: .br ! 12: .B char *format; ! 13: .PP ! 14: .B fprintf(stream, format ! 15: .RB [ , ! 16: arg ] ... ! 17: .B ) ! 18: .br ! 19: .SM ! 20: .B FILE ! 21: .B *stream; ! 22: .br ! 23: .B char *format; ! 24: .PP ! 25: .B sprintf(s, format ! 26: .RB [ , ! 27: arg ] ... ! 28: .B ) ! 29: .br ! 30: .B char *s, format; ! 31: .PP ! 32: .B #include <varargs.h> ! 33: .br ! 34: .B _doprnt(format, args, stream) ! 35: .br ! 36: .B char *format; ! 37: .br ! 38: .B va_list *args; ! 39: .br ! 40: .B FILE *stream; ! 41: .SH DESCRIPTION ! 42: .I Printf ! 43: places output on the standard output stream ! 44: .BR stdout . ! 45: .I Fprintf ! 46: places output on the named output ! 47: .IR stream . ! 48: .I Sprintf ! 49: places `output' in the string ! 50: .IR s , ! 51: followed by the character `\\0'. ! 52: All of these routines work by calling the internal ! 53: routine ! 54: .B _doprnt, ! 55: using the variable-length argument facilities of ! 56: .IR varargs (3). ! 57: .PP ! 58: Each of these functions converts, formats, and prints its arguments after ! 59: the first under control of the first argument. ! 60: The first argument is a character string which contains two types of objects: ! 61: plain characters, which are simply copied to the output stream, ! 62: and conversion specifications, each of which causes conversion and printing ! 63: of the next successive ! 64: .I arg ! 65: .IR printf . ! 66: .PP ! 67: Each conversion specification is introduced by the character ! 68: .BR % . ! 69: Following the ! 70: .BR % , ! 71: there may be ! 72: .TP ! 73: .B \(bu ! 74: an optional minus sign `\-' which specifies ! 75: .I "left adjustment" ! 76: of the converted value in the indicated field; ! 77: .TP ! 78: .B \(bu ! 79: an optional digit string specifying a ! 80: .I "field width;" ! 81: if the converted value has fewer characters than the field width ! 82: it will be blank-padded on the left (or right, ! 83: if the left-adjustment indicator has been given) to make up the field width; ! 84: if the field width begins with a zero, ! 85: zero-padding will be done instead of blank-padding; ! 86: .TP ! 87: .B \(bu ! 88: an optional period ! 89: .RB ` . ' ! 90: which serves to separate the field width from the next digit string; ! 91: .TP ! 92: .B \(bu ! 93: an optional digit string specifying a ! 94: .I precision ! 95: which specifies the number of digits to appear after the ! 96: decimal point, for e- and f-conversion, or the maximum number of characters ! 97: to be printed from a string; ! 98: .TP ! 99: .B \(bu ! 100: the character ! 101: .B l ! 102: specifying that a following ! 103: .BR d , ! 104: .BR o , ! 105: .BR x , ! 106: or ! 107: .B u ! 108: corresponds to a long integer ! 109: .IR arg . ! 110: .TP ! 111: .B \(bu ! 112: a character which indicates the type of ! 113: conversion to be applied. ! 114: .PP ! 115: A field width or precision may be `*' instead of a digit string. ! 116: In this case an integer ! 117: .I arg ! 118: supplies ! 119: the field width or precision. ! 120: .PP ! 121: The conversion characters ! 122: and their meanings are ! 123: .TP ! 124: .B dox ! 125: The integer ! 126: .I arg ! 127: is converted to decimal, octal, or ! 128: hexadecimal notation respectively. ! 129: .TP ! 130: .B f ! 131: The float or double ! 132: .I arg ! 133: is converted to decimal notation ! 134: in the style `[\fB\-\fR]ddd.ddd' ! 135: where the number of d's after the decimal point ! 136: is equal to the precision specification ! 137: for the argument. ! 138: If the precision ! 139: is missing, ! 140: 6 digits are given; ! 141: if the precision is explicitly 0, no digits and ! 142: no decimal point are printed. ! 143: .TP ! 144: .B e ! 145: The float or double ! 146: .I arg ! 147: is converted in the style ! 148: `[\fB\-\fR]d\fB.\fRddd\fBe\fR\(+-dd' ! 149: where there is one digit before the decimal point and ! 150: the number after is equal to the ! 151: precision specification for the argument; ! 152: when the precision is missing, ! 153: 6 digits are produced. ! 154: .TP ! 155: .B g ! 156: The float or double ! 157: .I arg ! 158: is printed in style ! 159: .BR d , ! 160: in style ! 161: .BR f , ! 162: or in ! 163: style ! 164: .BR e , ! 165: whichever gives full precision in minimum space. ! 166: .TP ! 167: .B c ! 168: The character ! 169: .I arg ! 170: is printed. ! 171: .TP ! 172: .B s ! 173: .I Arg ! 174: is taken to be a string (character pointer) ! 175: and characters from the string are printed until ! 176: a null character or until ! 177: the number of characters indicated by the precision ! 178: specification is reached; ! 179: however if the precision is 0 or missing ! 180: all characters up to a null are printed. ! 181: .TP ! 182: .B u ! 183: The unsigned integer ! 184: .I arg ! 185: is converted to decimal ! 186: and printed (the result will be in the ! 187: range 0 through MAXUINT, where MAXUINT equals 4294967295 on a Power 6/32). ! 188: .TP ! 189: .B % ! 190: Print a `%'; no argument is converted. ! 191: .PP ! 192: In no case does a non-existent or small field width ! 193: cause truncation of a field; ! 194: padding takes place only if the specified field ! 195: width exceeds the actual width. ! 196: Characters generated by ! 197: .I printf ! 198: are printed by ! 199: .IR putc (3S). ! 200: .PP ! 201: .B Examples ! 202: .br ! 203: To print a date and time in the form `Sunday, July 3, 10:02', ! 204: where ! 205: .I weekday ! 206: and ! 207: .I month ! 208: are pointers to null-terminated strings: ! 209: .RS ! 210: .HP ! 211: .nh ! 212: printf("%s, %s %d, %02d:%02d", weekday, month, day, hour, min); ! 213: .RE ! 214: .hy ! 215: .PP ! 216: To print ! 217: .if n pi ! 218: .if t \(*p ! 219: to 5 decimals: ! 220: .IP ! 221: printf("pi = %.5f", 4*atan(1.0)); ! 222: .SH "SEE ALSO" ! 223: putc(3S), ! 224: scanf(3S), ! 225: ecvt(3) ! 226: .SH BUGS ! 227: Very wide fields (>128 characters) fail. ! 228: .br ! 229: Due to the large size of the floating-point emulating package, ! 230: the `e', `f' and `g' formats are only available ! 231: with the `-lf' loader flag; otherwise a `?' is printed.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.