199 lines
5.3 KiB
Groff
199 lines
5.3 KiB
Groff
.\" Copyright (c) 1980 Regents of the University of California.
|
|
.\" All rights reserved. The Berkeley software License Agreement
|
|
.\" specifies the terms and conditions for redistribution.
|
|
.\"
|
|
.\" @(#)stdio.3s 6.2 (Berkeley) 5/13/86
|
|
.\"
|
|
.TH STDIO 3 "May 13, 1986"
|
|
.UC 4
|
|
.SH NAME
|
|
stdio \- standard buffered input/output package
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.ft B
|
|
#include <stdio.h>
|
|
|
|
FILE *stdin;
|
|
FILE *stdout;
|
|
FILE *stderr;
|
|
.ft R
|
|
.fi
|
|
.SH DESCRIPTION
|
|
The functions in the standard I/O library constitute a user-level buffering
|
|
scheme. The in-line macros
|
|
.B getc
|
|
and
|
|
.BR putc (3)
|
|
handle characters quickly. The higher level routines
|
|
.BR gets ,
|
|
.BR fgets ,
|
|
.BR scanf ,
|
|
.BR fscanf ,
|
|
.BR fread ,
|
|
.BR puts ,
|
|
.BR fputs ,
|
|
.BR printf ,
|
|
.BR fprintf ,
|
|
.BR fwrite
|
|
all use
|
|
.B getc
|
|
and
|
|
.BR putc ;
|
|
they can be freely intermixed.
|
|
.PP
|
|
A file with associated buffering is called a
|
|
.IR stream ,
|
|
and is declared to be a pointer to a defined type
|
|
.SM
|
|
.BR FILE .
|
|
.BR Fopen (3)
|
|
creates certain descriptive data for a stream
|
|
and returns a pointer to designate the stream in all further transactions.
|
|
There are three normally open streams with constant pointers declared in
|
|
the include file and associated with the standard open files:
|
|
.TP 10n
|
|
.B stdin
|
|
standard input file
|
|
.br
|
|
.ns
|
|
.TP
|
|
.B stdout
|
|
standard output file
|
|
.br
|
|
.ns
|
|
.TP
|
|
.B stderr
|
|
standard error file
|
|
.PP
|
|
A constant `pointer'
|
|
.SM
|
|
.B NULL
|
|
(0)
|
|
designates no stream at all.
|
|
.PP
|
|
An integer constant
|
|
.SM
|
|
.B EOF
|
|
(\-1) is returned upon end of file or error by integer functions that
|
|
deal with streams.
|
|
.PP
|
|
Any routine that uses the standard input/output package
|
|
must include the header file
|
|
.RI < stdio.h >
|
|
of pertinent macro definitions.
|
|
The functions and constants mentioned in the standard I/O manual pages
|
|
are declared in the include file and need no further declaration.
|
|
The constants, and the following `functions' are
|
|
implemented as macros; redeclaration of these names is perilous:
|
|
.BR clearerr ,
|
|
.BR getc ,
|
|
.BR getchar ,
|
|
.BR putc ,
|
|
.BR putchar ,
|
|
.BR feof ,
|
|
.BR ferror ,
|
|
.BR fileno .
|
|
.SH "SEE ALSO"
|
|
.BR open (2),
|
|
.BR close (2),
|
|
.BR read (2),
|
|
.BR write (2),
|
|
.BR fclose (3),
|
|
.BR ferror (3),
|
|
.BR fopen (3),
|
|
.BR fread (3),
|
|
.BR fseek (3),
|
|
.BR getc (3),
|
|
.BR gets (3),
|
|
.BR printf (3),
|
|
.BR putc (3),
|
|
.BR puts (3),
|
|
.BR scanf (3),
|
|
.BR setbuf (3),
|
|
.BR ungetc (3).
|
|
.SH DIAGNOSTICS
|
|
The value
|
|
.SM
|
|
.B EOF
|
|
is returned uniformly to indicate that a
|
|
.SM
|
|
.B FILE
|
|
pointer has not been initialized with
|
|
.BR fopen ,
|
|
input (output) has been attempted on an output (input) stream, or a
|
|
.SM
|
|
.B FILE
|
|
pointer designates corrupt or otherwise unintelligible
|
|
.SM
|
|
.B FILE
|
|
data.
|
|
.PP
|
|
For purposes of efficiency, this implementation of the standard library
|
|
has been changed to line buffer output to a terminal by default and attempts
|
|
to do this transparently by flushing the output whenever a
|
|
.BR read (2)
|
|
from the standard input is necessary. This is almost always transparent,
|
|
but may cause confusion or malfunctioning of programs which use
|
|
standard i/o routines but use
|
|
.BR read (2)
|
|
themselves to read from the standard input.
|
|
.PP
|
|
In cases where a large amount of computation is done after printing
|
|
part of a line on an output terminal, it is necessary to
|
|
.BR fflush (3)
|
|
the standard output before going off and computing so that the output
|
|
will appear.
|
|
.SH BUGS
|
|
The standard buffered functions do not interact well with certain other
|
|
library and system functions, especially \fBfork\fP and \fBabort\fP.
|
|
.SH "LIST OF FUNCTIONS"
|
|
.sp 2
|
|
.nf
|
|
.ta \w'setlinebuf'u+2n +\w'setbuf(3)'u+10n
|
|
\fBName\fP \fBAppears on Page\fP \fBDescription\fP
|
|
.ta \w'setlinebuf'u+4n +\w'setbuf(3)'u+4n
|
|
.sp 5p
|
|
clearerr ferror(3) stream status inquiries
|
|
fclose fclose(3) close or flush a stream
|
|
fdopen fopen(3) open a stream
|
|
feof ferror(3) stream status inquiries
|
|
ferror ferror(3) stream status inquiries
|
|
fflush fclose(3) close or flush a stream
|
|
fgetc getc(3) get character or word from stream
|
|
fgets gets(3) get a string from a stream
|
|
fileno ferror(3) stream status inquiries
|
|
fopen fopen(3) open a stream
|
|
fprintf printf(3) formatted output conversion
|
|
fputc putc(3) put character or word on a stream
|
|
fputs puts(3) put a string on a stream
|
|
fread fread(3) buffered binary input/output
|
|
freopen fopen(3) open a stream
|
|
fscanf scanf(3) formatted input conversion
|
|
fseek fseek(3) reposition a stream
|
|
ftell fseek(3) reposition a stream
|
|
fwrite fread(3) buffered binary input/output
|
|
getc getc(3) get character or word from stream
|
|
getchar getc(3) get character or word from stream
|
|
gets gets(3) get a string from a stream
|
|
getw getc(3) get character or word from stream
|
|
printf printf(3) formatted output conversion
|
|
putc putc(3) put character or word on a stream
|
|
putchar putc(3) put character or word on a stream
|
|
puts puts(3) put a string on a stream
|
|
putw putc(3) put character or word on a stream
|
|
rewind fseek(3) reposition a stream
|
|
scanf scanf(3) formatted input conversion
|
|
setbuf setbuf(3) assign buffering to a stream
|
|
setvbuf setbuf(3) assign buffering to a stream
|
|
snprintf printf(3) formatted output conversion
|
|
sprintf printf(3) formatted output conversion
|
|
sscanf scanf(3) formatted input conversion
|
|
ungetc ungetc(3) push character back into input stream
|
|
vfprintf printf(3) formatted output conversion
|
|
vfscanf scanf(3) formatted input conversion
|
|
vprintf printf(3) formatted output conversion
|
|
vscanf scanf(3) formatted input conversion
|
|
vsnprintf printf(3) formatted output conversion
|
|
vsprintf printf(3) formatted output conversion
|
|
vsscanf scanf(3) formatted input conversion
|
|
.fi
|