|
|
1.1 ! root 1: .ds ZZ DEVELOPMENT PACKAGE ! 2: .TH PRINTF 3L "630 MTG" ! 3: .SH NAME ! 4: printf, fprintf, sprintf, lprintf, bprintf \- print formatted output ! 5: .SH SYNOPSIS ! 6: .B "int Printf (format" ! 7: [ ! 8: .B , ! 9: arg ] .\|.\|. ! 10: .B ) ! 11: .br ! 12: .B "void printf (format" ! 13: [ ! 14: .B , ! 15: arg ] .\|.\|. ! 16: .B ) ! 17: .br ! 18: .B "char \(**format;" ! 19: .PP ! 20: .B "int Fprintf (stream, format" ! 21: [ ! 22: .B , ! 23: arg ] .\|.\|. ! 24: .B ) ! 25: .br ! 26: .B "void fprintf (stream, format" ! 27: [ ! 28: .B , ! 29: arg ] .\|.\|. ! 30: .B ) ! 31: .br ! 32: .B "char \(**format;" ! 33: .br ! 34: .SM ! 35: .B FILE ! 36: .B \(**stream; ! 37: .PP ! 38: .B "int Sprintf (s, format" ! 39: [ ! 40: .B , ! 41: arg ] .\|.\|. ! 42: .B ) ! 43: .br ! 44: .B "void sprintf (s, format" ! 45: [ ! 46: .B , ! 47: arg ] .\|.\|. ! 48: .B ) ! 49: .br ! 50: .B "char \(**s, format;" ! 51: .PP ! 52: .B "int Lprintf (format" ! 53: [ ! 54: .B , ! 55: arg ] .\|.\|. ! 56: .B ) ! 57: .br ! 58: .B "void lprintf (format" ! 59: [ ! 60: .B , ! 61: arg ] .\|.\|. ! 62: .B ) ! 63: .br ! 64: .B "char \(**format;" ! 65: .PP ! 66: .B "int Bprintf (format" ! 67: [ ! 68: .B , ! 69: arg ] .\|.\|. ! 70: .B ) ! 71: .br ! 72: .B "void bprintf (format" ! 73: [ ! 74: .B , ! 75: arg ] .\|.\|. ! 76: .B ) ! 77: .br ! 78: .B "char \(**format;" ! 79: .SH DESCRIPTION ! 80: .I Lprintf\^ ! 81: places output in the calling process's window. ! 82: .I Bprintf ! 83: places output at the bottom part of the 630's screen. ! 84: .I Printf\^ ! 85: places output on the standard output stream ! 86: .IR stdout . ! 87: .I Fprintf\^ ! 88: places output on the named output ! 89: .IR stream . ! 90: .I Sprintf\^ ! 91: places ``output,'' ! 92: followed by the null character ! 93: .RB ( \e0 ), ! 94: in consecutive bytes starting at ! 95: .RI \(** s ; ! 96: it is the user's responsibility to ensure that ! 97: enough storage is available. ! 98: Each function returns the number of characters ! 99: transmitted (not including the ! 100: .B \e0 ! 101: in the case of ! 102: .IR Sprintf ), ! 103: or ! 104: a negative value if an output error was encountered. ! 105: The ! 106: .IR printf , ! 107: .IR lprintf , ! 108: .IR bprintf , ! 109: .IR fprintf , ! 110: and ! 111: .I sprintf ! 112: functions operate the same as those starting with a capital letter ! 113: but support only a limited number of format options and no return value. ! 114: .PP ! 115: Each of these functions ! 116: converts, formats, and prints its ! 117: .IR arg s ! 118: under control of the ! 119: .IR format . ! 120: The ! 121: .I format\^ ! 122: is a character string ! 123: that contains ! 124: two types of objects: ! 125: plain characters, which are simply copied to the ! 126: output stream, ! 127: and conversion specifications, ! 128: each of which results in fetching of ! 129: zero or more ! 130: .IR arg s. ! 131: The results are undefined if there are insufficient ! 132: .IR arg s ! 133: for the format. ! 134: If the format is exhausted while ! 135: .IR arg s ! 136: remain, the excess ! 137: .IR arg s ! 138: are simply ignored. ! 139: .PP ! 140: Each conversion specification is introduced by ! 141: the character ! 142: .BR % . ! 143: After the ! 144: .BR % , ! 145: the following ! 146: appear in sequence: ! 147: .PP ! 148: .RS ! 149: Zero or more ! 150: .IR flags , ! 151: which modify the meaning of ! 152: the conversion specification. ! 153: .PP ! 154: An optional decimal digit string specifying a minimum ! 155: .IR "field width" . ! 156: If the converted value has fewer characters ! 157: than the field width, ! 158: it will be padded on the left (or right, ! 159: if the left-adjustment flag `\-' (described below) has been ! 160: given) to the field width. ! 161: If the field width for an ! 162: .B s ! 163: conversion is preceded by a 0, the ! 164: string is right adjusted with zero-padding on the left. ! 165: .PP ! 166: A ! 167: .I precision\^ ! 168: gives ! 169: the minimum number of digits to appear for the ! 170: .BR d , ! 171: .BR o , ! 172: .BR u , ! 173: .BR x , ! 174: or ! 175: .B X ! 176: conversions, ! 177: the number of digits to appear after the ! 178: decimal point for the ! 179: .B e ! 180: and ! 181: .B f ! 182: conversions, ! 183: the maximum number of significant digits ! 184: for the ! 185: .B g ! 186: conversion, ! 187: or the maximum number of characters ! 188: to be printed from a string in ! 189: .B s ! 190: conversion. ! 191: The precision takes the form of a period ! 192: .RB ( \&. ) ! 193: followed by a decimal digit string; ! 194: a null digit string is treated as zero. ! 195: .PP ! 196: An optional ! 197: .B l ! 198: (ell) specifying that a following ! 199: .BR d , ! 200: .BR o , ! 201: .BR u , ! 202: .BR x , ! 203: or ! 204: .B X ! 205: conversion character applies to a long ! 206: integer ! 207: .IR arg . ! 208: A ! 209: .B l ! 210: before any other conversion character is ignored. ! 211: .PP ! 212: A character that indicates the type of ! 213: conversion to be applied. ! 214: .RE ! 215: .PP ! 216: A field width or precision may be ! 217: indicated by an asterisk ! 218: .RB ( \(** ) ! 219: instead of a digit string. ! 220: In this case, an integer ! 221: .I arg\^ ! 222: supplies ! 223: the field width or precision. ! 224: The ! 225: .I arg\^ ! 226: that is actually converted is not fetched until ! 227: the conversion letter is seen, so the ! 228: .IR arg s ! 229: specifying field width or precision must appear ! 230: .I before\^ ! 231: the ! 232: .I arg\^ ! 233: (if any) to be converted. ! 234: .PP ! 235: The flag characters and their meanings are: ! 236: .PD 0 ! 237: .TP 10 ! 238: .B \- ! 239: The result of the conversion will be left-justified within the field. ! 240: .TP ! 241: .B + ! 242: The result of a signed ! 243: conversion will always begin with a sign ! 244: .RB ( + ! 245: or ! 246: .BR \- ). ! 247: .TP ! 248: blank ! 249: If the first character of a signed conversion is not a sign, a blank ! 250: will be prefixed to the result. ! 251: This implies that if the blank and ! 252: .B + ! 253: flags both appear, the blank flag will be ignored. ! 254: .TP ! 255: .B # ! 256: This flag specifies that the value is to be converted ! 257: to an ``alternate form.''\ ! 258: For ! 259: .BR c , ! 260: .BR d , ! 261: .BR s , ! 262: and ! 263: .B u ! 264: conversions, the flag has no effect. ! 265: For ! 266: .B o ! 267: conversion, it increases the precision to force ! 268: the first digit of the result to be a zero. ! 269: For ! 270: .B x ! 271: or ! 272: .B X ! 273: conversion, a non-zero result will have ! 274: .B 0x ! 275: or ! 276: .B 0X ! 277: prefixed to it. ! 278: For ! 279: .BR e , ! 280: .BR E , ! 281: .BR f , ! 282: .BR g , ! 283: and ! 284: .B G ! 285: conversions, the result will always contain a decimal point, ! 286: even if no digits follow the point (normally, a decimal point ! 287: appears in the result of these conversions only if a digit ! 288: follows it). ! 289: For ! 290: .B g ! 291: and ! 292: .B G ! 293: conversions, trailing zeroes will ! 294: .I not\^ ! 295: be removed from the result ! 296: (which they normally are). ! 297: .PD ! 298: .PP ! 299: The conversion characters ! 300: and their meanings are: ! 301: .PP ! 302: .PD 0 ! 303: .TP 10 ! 304: \f3d\fP,\f3o\fP,\f3u\fP,\f3x\fP,\f3X\fP ! 305: The integer ! 306: .I arg\^ ! 307: is converted to signed decimal, ! 308: unsigned octal, decimal, or ! 309: hexadecimal notation ! 310: .RB ( x ! 311: and ! 312: .BR X ), ! 313: respectively; ! 314: the letters ! 315: .B abcdef ! 316: are used for ! 317: .B x ! 318: conversion and the letters ! 319: .SM ! 320: .B ABCDEF ! 321: for ! 322: .B X ! 323: conversion. ! 324: The precision specifies the minimum number of digits ! 325: to appear; if the value being converted can be represented ! 326: in fewer digits, it will be expanded with leading zeroes. ! 327: (For compatibility with older versions, ! 328: padding with leading zeroes may alternatively be specified by ! 329: prepending a zero to the field width. ! 330: This does not imply an octal value for the field width.) ! 331: The default precision is 1. ! 332: The result of converting a zero value with a precision ! 333: of zero is a null string. ! 334: .TP ! 335: .BR f ! 336: The float or double ! 337: .I arg\^ ! 338: is converted to decimal notation ! 339: in the style ``[\f3\-\fP]ddd\f3.\fPddd,'' ! 340: where the number of digits after the decimal point ! 341: is equal to the precision specification. ! 342: If the precision ! 343: is missing, ! 344: six digits are output; ! 345: if the precision is explicitly 0, ! 346: no decimal point appears. ! 347: .TP ! 348: .BR e , E ! 349: The float or double ! 350: .I arg\^ ! 351: is converted in the style ! 352: ``[\f3\-\fP]d\f3.\fPddd\f3e\(+-\fPdd,'' ! 353: where there is one digit before the decimal point and ! 354: the number of digits after it is equal to the ! 355: precision; ! 356: when the precision is missing, ! 357: six digits are produced; ! 358: if the precision is zero, no decimal point appears. ! 359: The ! 360: .B E ! 361: format code will produce a number with ! 362: .B E ! 363: instead of ! 364: .B e ! 365: introducing the exponent. ! 366: The exponent always contains at least two digits. ! 367: .TP ! 368: .BR g , G ! 369: The float or double ! 370: .I arg\^ ! 371: is printed in style ! 372: .BR f ! 373: or ! 374: .BR e ! 375: (or in style ! 376: .B E ! 377: in the case of a ! 378: .B G ! 379: format code), ! 380: with the precision specifying the number of significant digits. ! 381: The style used depends on the value converted: ! 382: style ! 383: .B e ! 384: will be used only if the exponent resulting from ! 385: the conversion is less than \-4 or greater than the precision. ! 386: Trailing zeroes are removed from the result; a decimal point ! 387: appears only if it is followed by a digit. ! 388: .TP ! 389: .B c ! 390: The character ! 391: .I arg\^ ! 392: is printed. ! 393: .TP ! 394: .B s ! 395: The ! 396: .I arg\^ ! 397: is taken to be a string (character pointer) ! 398: and characters from the string are printed until ! 399: a null character ! 400: .RB ( \e0 ) ! 401: is encountered or ! 402: the number of characters indicated by the precision ! 403: specification is reached. ! 404: If the precision is missing, it is taken to be infinite, so ! 405: all characters up to the first null character are printed. ! 406: A ! 407: .SM NULL ! 408: value for ! 409: .I arg\^ ! 410: will yield undefined results. ! 411: .TP ! 412: .B % ! 413: Print a ! 414: .BR % ; ! 415: no argument is converted. ! 416: .PD ! 417: .PP ! 418: In no case does a non-existent or small field width ! 419: cause truncation of a field; ! 420: if the result of a conversion is wider than the field width, ! 421: the field is simply expanded to contain the conversion result. ! 422: Characters generated by ! 423: .IR Printf\^ , ! 424: .IR printf\^ , ! 425: .IR Fprintf\^ , ! 426: and ! 427: .I fprintf\^ ! 428: are printed as if ! 429: .IR putc (3S) ! 430: had been called. ! 431: Characters generated by ! 432: .I Lprintf\^ ! 433: and ! 434: .I lprintf\^ ! 435: are printed as if ! 436: .IR lputchar (3L) ! 437: had been called. ! 438: Characters generated by ! 439: .I Bprintf ! 440: and ! 441: .I bprintf ! 442: are printed as if ! 443: .IR bputchar (3L) ! 444: had been called. ! 445: .PP ! 446: The routines ! 447: .IR printf , ! 448: .IR lprintf , ! 449: .IR bprintf , ! 450: .IR fprintf , ! 451: and ! 452: .I sprintf ! 453: support only the ! 454: .BR d , ! 455: .BR o , ! 456: .BR u , ! 457: .BR x , ! 458: .BR s , ! 459: and ! 460: .B c ! 461: conversion characters and the optional ! 462: .BR l . ! 463: They do not support floating point format, flags, field width, or ! 464: precision options. This makes their code size small. ! 465: .SH EXAMPLES ! 466: To print a date and time in the form ``Sunday, July 3, 10:02,'' ! 467: where ! 468: .I weekday\^ ! 469: and ! 470: .I month\^ ! 471: are pointers to null-terminated strings: ! 472: .RS ! 473: .nh ! 474: .PP ! 475: Lprintf("%s,\ %s\ %d,\ %d\fB:\fP%\fB.\fP2d",\ weekday,\ month,\ day,\ hour,\ min); ! 476: .RE ! 477: .PP ! 478: .hy 14 ! 479: To print ! 480: .if n .I pi\^ ! 481: .if t \(*p ! 482: to 5 decimal places: ! 483: .RS ! 484: .PP ! 485: Lprintf("pi \|= \|%\f3.\fP5f", \|4 \(** atan(1\f3.\fP0)); ! 486: .RE ! 487: .SH SEE ALSO ! 488: jx(1), bputchar(3L), ecvt(3L), lputchar(3L). ! 489: .br ! 490: putc(3S) in the \fIUNIX System V Programmer's Reference Manual\fR. ! 491: .\" @(#)printf.3l 1.1.1.1 of 4/1/87
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.