STDIO(3S) GENIX Programmer's Manual STDIO(3S)
NAME
stdio - standard buffered input/output package
SYNOPSIS
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;
DESCRIPTION
The functions described in Sections 3S constitute an efficient
user-level buffering scheme. The in-line macros getc and putc(3)
handle characters quickly. The higher level routines gets, fgets,
scanf, fscanf, fread, puts, fputs, printf, fprintf, fwrite all 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(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:
stdin standard input file
stdout standard output file
stderr standard error file
A constant `pointer' NULL (0) designates no stream at all.
An integer constant EOF (-1) is returned upon end of file or error
by integer functions that deal with streams.
Any routine that uses the standard input/output package must include
the header file <stdio.h> of pertinent macro definitions. The func-
tions and constants mentioned in sections labeled 3S are declared in
the include file and need no further declaration. The constants,
and the following `functions' are implemented as macros; redeclara-
tion of these names is perilous: getc, getchar, putc, putchar, feof,
ferror, fileno.
SEE ALSO
open(2), close(2), read(2), write(2)
DIAGNOSTICS
The value EOF is returned uniformly to indicate that a FILE pointer
has not been initialized with fopen, input (output) has been
attempted on an output (input) stream, or a FILE pointer designates
corrupt or otherwise unintelligible FILE data.
For purposes of efficiency, this implementation of the standard
library has been changed to line buffer output to a terminal by
Printed 11/16/83 1
STDIO(3S) GENIX Programmer's Manual STDIO(3S)
default and attempts to do this transparently by flushing the output
whenever a 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 read(2) them-
selves to read from the standard input.
In cases where a large amount of computation is done after printing
part of a line on an output terminal, it is necessary to fflush(3)
the standard output before going off and computing so that the out-
put will appear.
Printed 11/16/83 2