stdio(3S) stdio(3S)
NAME
stdio: stdin, stdout, stderr - standard buffered input/output streams
SYNOPSIS
#include <stdio.h>
FILE *stdin, *stdout, *stderr;
DESCRIPTION
The functions described in section 3S of this manual constitute an
efficient, user-level I/O buffering scheme. The in-line macros getc()
and putc() handle characters quickly. The macros getchar() and
putchar(), and the higher-level routines fgetc(), fgets(), fprintf(),
fputc(), fputs(), fread(), fscanf(), fwrite(), gets(), getw(),
printf(), puts(), putw(), and scanf() all use or act as if they use
getc() and putc(); they can be freely intermixed.
A file with associated buffering is called a stream and is declared to
be a pointer to a defined type FILE. fopen() creates certain descrip-
tive data for a stream and returns a pointer to designate the stream
in all further transactions. Normally, there are three open streams
with constant pointers declared in the stdio.h header file and associ-
ated with the standard open files:
stdin Standard input file
stdout Standard output file
stderr Standard error output file
The following symbolic values in unistd.h define the file descriptors
that will be associated with the C language stdin, stdout and stderr
when the application is started:
STDINFILENO Standard input value, stdin (0).
STDOUTFILENO Standard output value, stdout (1).
STDERRFILENO Standard error value, stderr (2).
A constant NULL designates a null pointer.
An integer-constant EOF (-1) is returned upon end-of-file or error by
most integer functions that deal with streams (see the individual
descriptions for details).
An integer constant BUFSIZ specifies the size of the buffers used by
the particular implementation.
An integer constant FILENAMEMAX specifies the size needed for an
array of char large enough to hold the longest path name string that
the implementation guarantees can be opened.
Page 1 Reliant UNIX 5.44 Printed 11/98
stdio(3S) stdio(3S)
An integer constant FOPENMAX specifies the minimum number of files
that the implementation guarantees can be open simultaneously. Note
that no more than 255 files may be opened via fopen, and only file
descriptors 0 through 255 are valid.
Any program that uses this package must include the header file of
pertinent macro definitions, as follows:
#include <stdio.h>
The functions and constants marked (3S) in this manual are declared in
that header file and need no further declaration. The constants and
the following "functions" are implemented as macros (redeclaration of
these names is perilous): getc(), getchar(), putc(), putchar(), fer-
ror(), feof(), clearerr(), and fileno(). There are also function ver-
sions of getc(), getchar(), putc(), putchar(), ferror(), feof(),
clearerr(), and fileno().
Output streams, with the exception of the standard error stream
stderr(), are by default buffered if the output refers to a file and
line-buffered if the output refers to a terminal. The standard error
output stream stderr() is by default unbuffered, but use of freopen()
[see fopen(3S)] will cause it to become buffered or line-buffered.
When an output stream is unbuffered, information is queued for writing
on the destination file or terminal as soon as written; when it is
buffered, many characters are saved up and written as a block. When it
is line-buffered, each line of output is queued for writing on the
destination terminal as soon as the line is completed (that is, as
soon as a new-line character is written or terminal input is
requested). setbuf() or setbuf() [both described in setbuf(3S)] can
change the stream's buffering strategy.
RESULT
Invalid file pointers usually cause grave disorder, possibly including
program termination. Individual function descriptions describe the
possible error conditions.
SEE ALSO
close(2), lseek(2), open(2), pipe(2), read(2), write(2), ctermid(3S),
cuserid(3S), fclose(3S), ferror(3S), fopen(3S), fread(3S), fseek(3S),
getc(3S), gets(3S), popen(3S), printf(3S), putc(3S), puts(3S),
scanf(3S), setbuf(3S), system(3S), tmpfile(3S), tmpnam(3S),
ungetc(3S), unistd(4), stdio(5).
Page 2 Reliant UNIX 5.44 Printed 11/98