PRINTF.3
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:6k
- ." @(#)printf.3s 6.3 (Berkeley) 6/5/86
- ."
- .TH PRINTF 3 "June 5, 1986"
- .AT 3
- .SH NAME
- printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion
- .SH SYNOPSIS
- .nf
- .ft B
- #include <sys/types.h>
- #include <stdio.h>
- #include <stdarg.h>
- int printf(const char *fIformatfP fR[fP, fIargfPfR] ...fP);
- int fprintf(FILE *fIstreamfP, const char *fIformatfP fR[fP, fIargfPfR] ...fP);
- int sprintf(char *fIsfP, const char *fIformatfP fR[fP, fIargfPfR] ...fP);
- int snprintf(char *fIsfP, size_t fInfP, const char *fIformatfP fR[fP, fIargfPfR] ...fP);
- int vprintf(const char *fIformatfP, va_list fIargsfP);
- int vfprintf(FILE *fIstreamfP, const char *fIformatfP, va_list fIargsfP);
- int vsprintf(char *fIsfP, const char *fIformatfP, va_list fIargsfP);
- int vsnprintf(char *fIsfP, size_t fInfP, const char *fIformatfP, va_list fIargsfP);
- .ft R
- .fi
- .SH DESCRIPTION
- .B Printf
- places output on the standard output stream
- .BR stdout .
- .B Fprintf
- places output on the named output
- .IR stream .
- .B Sprintf
- places `output' in the string
- .IR s ,
- followed by the character `e0'.
- .B Snprintf
- (Minix-vmd only)
- is like
- .B sprintf
- except that no more than
- .IR n -1
- characters are written to
- .I s
- followed by a `e0'.
- .PP
- The
- .B v*printf
- functions can be used to make functions like the first four by using the
- .BR stdarg (3)
- method to process the argument.
- .PP
- Each of these functions converts, formats, and prints its arguments after
- the first under control of the first argument.
- The first argument is a character string which contains two types of objects:
- plain characters, which are simply copied to the output stream,
- and conversion specifications, each of which causes conversion and printing
- of the next successive
- .IR arg .
- .PP
- Each conversion specification is introduced by the character
- .BR % .
- The remainder of the conversion specification includes
- in the following order
- .TP
- (bu
- Zero or more of following flags:
- .RS
- .TP
- (bu
- a `#' character
- specifying that the value should be converted to an ``alternate form''.
- For
- .BR c ,
- .BR d ,
- .BR s ,
- and
- .BR u
- conversions, this option has no effect. For
- .B o
- conversions, the precision of the number is increased to force the first
- character of the output string to a zero. For
- .BR x ( X )
- conversion, a non-zero result has the string
- .BR 0x ( 0X )
- prepended to it. For
- .BR e ,
- .BR E ,
- .BR f ,
- .BR g ,
- and
- .BR G
- conversions, the result will always contain a decimal point, even if no
- digits follow the point (normally, a decimal point only appears in the
- results of those conversions if a digit follows the decimal point). For
- .B g
- and
- .B G
- conversions, trailing zeros are not removed from the result as they
- would otherwise be.
- .TP
- (bu
- a minus sign `-' which specifies
- .I "left adjustment"
- of the converted value in the indicated field;
- .TP
- (bu
- a `+' character specifying that there should always be
- a sign placed before the number when using signed conversions.
- .TP
- (bu
- a space specifying that a blank should be left before a positive number
- during a signed conversion. A `+' overrides a space if both are used.
- .RE
- .TP
- (bu
- an optional digit string specifying a
- .I "field width;"
- if the converted value has fewer characters than the field width
- it will be blank-padded on the left (or right,
- if the left-adjustment indicator has been given) to make up the field width;
- if the field width begins with a zero,
- zero-padding will be done instead of blank-padding;
- .TP
- (bu
- an optional period
- .RB ` . '
- which serves to separate the field width from the next digit string;
- .TP
- (bu
- an optional digit string specifying a
- .I precision
- which specifies the number of digits to appear after the
- decimal point, for e- and f-conversion, or the maximum number of characters
- to be printed from a string;
- .TP
- (bu
- the character
- .B l
- specifying that a following
- .BR d ,
- .BR o ,
- .BR x ,
- or
- .B u
- corresponds to a long integer
- .IR arg .
- .TP
- (bu
- a character which indicates the type of
- conversion to be applied.
- .PP
- A field width or precision may be `*' instead of a digit string.
- In this case an integer
- .I arg
- supplies
- the field width or precision.
- .PP
- The conversion characters
- and their meanings are
- .TP
- .B dox
- The integer
- .I arg
- is converted to decimal, octal, or
- hexadecimal notation respectively.
- .TP
- .B X
- Like
- .BR x ,
- but use upper case instead of lower case.
- .TP
- .B f
- The float or double
- .I arg
- is converted to decimal notation
- in the style `[fB-fR]ddd.ddd'
- where the number of d's after the decimal point
- is equal to the precision specification
- for the argument.
- If the precision
- is missing,
- 6 digits are given;
- if the precision is explicitly 0, no digits and
- no decimal point are printed.
- .TP
- .B e
- The float or double
- .I arg
- is converted in the style
- `[fB-fR]dfB.fRdddfBefR(+-dd'
- where there is one digit before the decimal point and
- the number after is equal to the
- precision specification for the argument;
- when the precision is missing,
- 6 digits are produced.
- .TP
- .B g
- The float or double
- .I arg
- is printed in style
- .BR d ,
- in style
- .BR f ,
- or in
- style
- .BR e ,
- whichever gives full precision in minimum space.
- .TP
- .B c
- The character
- .I arg
- is printed.
- .TP
- .B s
- .I Arg
- is taken to be a string (character pointer)
- and characters from the string are printed until
- a null character or until
- the number of characters indicated by the precision
- specification is reached;
- however if the precision is 0 or missing
- all characters up to a null are printed.
- .TP
- .B u
- The unsigned integer
- .I arg
- is converted to decimal
- and printed.
- .TP
- .B %
- Print a `%'; no argument is converted.
- .PP
- In no case does a non-existent or small field width
- cause truncation of a field;
- padding takes place only if the specified field
- width exceeds the actual width.
- Characters generated by
- .B printf
- are printed by
- .BR putc (3).
- .PP
- .B Examples
- .br
- To print a date and time in the form `Sunday, July 3, 10:02',
- where
- .I weekday
- and
- .I month
- are pointers to null-terminated strings:
- .PP
- .RS
- printf("%s, %s %d, %02d:%02d", weekday, month, day, hour, min);
- .RE
- .PP
- To print
- .if n pi
- .if t (*p
- to 5 decimals:
- .IP
- printf("pi = %.5f", 4*atan(1.0));
- .SH "SEE ALSO"
- .BR putc (3),
- .BR scanf (3),
- .BR ecvt (3),
- .BR stdarg (3).