123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- .TH PRINT 3 "$Revision$"
- .ad
- .SH NAME
- print, fprint, sprint, doprnt -- very simple formatted-output routines
- .SH SYNOPSIS
- .nf
- .B #include <system.h>
- .B #include <varargs.h>
- .PP
- .B print(format [, arg] ... )
- .B char *format;
- .PP
- .B fprint(filep, format [, arg] ... )
- .B File *filep;
- .B char *format;
- .PP
- .B char *sprint(s, format [, arg] ... )
- .B char *s, *format;
- .PP
- .B doprnt(filep, format, args)
- .B File *filep;
- .B char *format;
- .B va_list args;
- .PP
- .B int _format(buf, format, args)
- .B char *buf;
- .B char *format;
- .B va_list args;
- .fi
- .SH DESCRIPTION
- .I Print
- writes output on standard output.
- .I Fprint
- and
- .I doprnt
- place output on the open file known by
- .IR filep .
- .I filep could for instance be STDOUT or STDERR.
- .I Sprint
- places `output' in the string
- .IR s ,
- followed by the character `\\0'.
- .PP
- Each of these functions converts, formats and prints its arguments, following
- the
- .I format
- argument, under control of
- .IR format .
- .I Format
- is a character string which contains two types of objects: plain characters,
- which are simply copied to the output destination, and conversion
- specifications, each of which causes conversion and printing of the next
- successive argument.
- .PP
- A conversion specification is introduced by the character %.
- Following the %, there may be
- .IP \(bu
- an optional row of decimal digits specifying the field width;
- if the converted integral value has fewer characters than
- the field width, it will be blank-padded on the left;
- if the field width begins with a zero, zero-padding will be done;
- .IP \(bu
- the character
- .B l
- specifying that a following
- .BR b ,
- .BR d ,
- .BR o ,
- .B u
- or
- .B x
- corresponds to a long-integer argument;
- .IP \(bu
- a character which indicates the type of conversion to be applied.
- .LP
- .PP
- The conversion characters and their meanings are
- .IP \fBbdox\fP
- The next argument is an integer and is converted to binary, decimal, octal
- or hexadecimal notation respectively.
- .IP \fBc\fP
- Next argument is a character and is put directly into the resulting string.
- the field width is one character.
- .IP \fBs\fP
- Next argument is taken to be a character pointer and characters from the
- string are taken until a null character is reached; a specified field width
- is not taken into account.
- .IP \fBu\fP
- The unsigned integer argument is converted to decimal.
- .LP
- .PP
- Integral arguments are not truncated, even if their size exceeds the specified
- field width.
- Padding takes place only if the specified field width exceeds the actual width.
- .PP
- The printing routines build the string to be printed internally and use
- .I sys_write
- to print it.
- .PP
- The
- .I _format
- routine builds the string, but does not null-terminate it. It returns the
- length of the string.
- .PP
- .I Doprnt
- takes
- .I args
- as the address of the arguments of the format string.
- This allows routines, e.g.
- .IR print ,
- to be defined as follows:
- .br
- .RS
- .nf
- #include <varargs.h>
- #include <system.h>
- /*VARARGS*/
- print(va_alist)
- va_dcl
- {
- char *fmt;
- va_list args;
- va_start(args);
- fmt = va_arg(args, char *);
- doprnt(STDOUT, fmt, args);
- va_end(args);
- }
- .fi
- .RE
- .SH FILES
- .nf
- ~em/modules/lib/libprint.a
- .fi
- .SH MODULES
- system(3), string(3)
- .SH DIAGNOSTICS
- .PP
- Each illegal conversion specification is replaced by the string "<bad\ format>".
- .SH BUGS
- The maximum length of the string to be printed is 1024 characters.
- .SH SEE ALSO
- printf(3)
|