Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

open(2)

close(2)

read(2)

write(2)

STDIO(3)  —  UNIX Programmer’s Manual

NAME

stdio − standard buffered input/output package

SYNOPSIS

#include <stdio.h>

FILE *stdin;
FILE *stdout;
FILE *stderr;

DESCRIPTION

These functions 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 functions and constants mentioned in Section 3 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: 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 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) themselves 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 output will appear.

7th Edition

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026