stdio(3S) 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 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 [see
intro(3)] and is declared to be a pointer to a defined type
FILE. fopen 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 designates a null pointer.
An integer-constant EOF (-1) is returned at 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 FILENAME_MAX specifies the size needed for
an array of char large enough to hold the longest file name
string that the implementation guarantees can be opened.
Copyright 1994 Novell, Inc. Page 1
stdio(3S) stdio(3S)
The number of open streams available to a process is limited
only by the maximum number of files that the process may open.
This limitation is dependent on the operating system.
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, and putchar.
There are also function versions of getc, getchar, putc, and
putchar.
Output streams, except for 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 setvbuf [both
described in setbuf(3S)] may be used to change the stream's
buffering strategy.
Errors
Invalid stream pointers usually cause grave disorder, possibly
including program termination. Individual function
descriptions describe the possible error conditions.
REFERENCES
close(2), ctermid(3S), cuserid(3S), fclose(3S), ferror(3S),
fopen(3S), fprintf(3S), fread(3S), fscanf(3S), fseek(3S),
getc(3S), gets(3S), lseek(2), open(2), pipe(2), popen(3S),
putc(3S), puts(3S), read(2), setbuf(3S), system(3S),
tmpfile(3S), tmpnam(3S), ungetc(3S), write(2)
Copyright 1994 Novell, Inc. Page 2
stdio(3S) stdio(3S)
NOTICES
Applications should restrict their use of the standard I/O
package to the interfaces documented on the Section 3S manual
pages. They should not depend on individual members of the
internal structures found in stdio.h.
Copyright 1994 Novell, Inc. Page 3