|
|
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.