STDIO(3S) SysV STDIO(3S)
NAME
stdio - standard buffered input/output package
SYNOPSIS
#include <stdio.h>
FILE *stdin, *stdout, *stderr;
DESCRIPTION
The functions described in the entries of sub-class 3S of this manual
constitute an efficient, user-level I/O buffering scheme. The in-line
macros getc(3S) and putc(3S) 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(3S) creates certain descriptive
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 associated
with the standard open files:
stdin standard input file
stdout standard output file
stderr standard error file
A constant NULL (0) designates a nonexistent 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.
Any program that uses this package must include the header file of
pertinent macro definitions, as follows:
#include <stdio.h>
The functions and constants mentioned in the entries of sub-class 3S of
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, 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 9see 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 newline character is written or
terminal input is requested). setbuf(3S) or setvbuf() in setbuf(3S) may
be used to change the stream's buffering strategy.
SEE ALSO
cc(1), open(2), close(2), lseek(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).
DIAGNOSTICS
Invalid stream pointers will usually cause grave disorder, possibly
including program termination. Individual function descriptions describe
the possible error conditions.
NOTES
To be backward compatible, programs compiled with the
-A ansi
option (see cc(1)) must contain the directives
#define _CLASSIC_IOB
#define _SYS5_SOURCE
before any #include directives.