.B FILE *stderr;
.SH DESCRIPTION
The standard I/O library provides a simple and efficient buffered stream
-I/O interface. Input and output is mapped into logical data streams and the
-physical I/O characteristics are concealed. The functions and macros are
+I/O interface.
+Input and output is mapped into logical data streams and the
+physical I/O characteristics are concealed.
+The functions and macros are
listed below; more information is available from the individual man pages.
.PP
A stream is associated with an external file (which may be a physical
device) by
.I opening
-a file, which may involve creating a new file. Creating an existing file
-causes its former contents to be discarded. If a file can support
-positioning requests (such as a disk file, as opposed to a terminal) then a
+a file, which may involve creating a new file.
+Creating an existing file
+causes its former contents to be discarded.
+If a file can support positioning requests (such as a disk file,
+as opposed to a terminal) then a
.I file position indicator
associated with the stream is positioned at the start of the file (byte
-zero), unless the file is opened with append mode. If append mode is used,
+zero), unless the file is opened with append mode.
+If append mode is used,
it is unspecified whether the position indicator will be placed at the
-start or the end of the file. The position indicator is maintained by
-subsequent reads, writes and positioning requests. All input occurs
-as if the characters were read by successive calls to the
+start or the end of the file.
+The position indicator is maintained by
+subsequent reads, writes and positioning requests.
+All input occurs as if the characters were read by successive calls to the
.BR fgetc (3)
function; all output takes place as if all characters were written by
successive calls to the
.PP
A file is disassociated from a stream by
.I closing
-the file. Output streams are flushed (any unwritten buffer contents are
+the file.
+Output streams are flushed (any unwritten buffer contents are
transferred to the host environment) before the stream is disassociated from
-the file. The value of a pointer to a
+the file.
+The value of a pointer to a
.B FILE
object is indeterminate after a file is closed (garbage).
.PP
A file may be subsequently reopened, by the same or another program
execution, and its contents reclaimed or modified (if it can be
-repositioned at the start). If the main function returns to its original
+repositioned at the start).
+If the main function returns to its original
caller, or the
.BR exit (3)
function is called, all open files are closed (hence all output streams are
-flushed) before program termination. Other methods of program termination,
+flushed) before program termination.
+Other methods of program termination,
such as
.BR abort (3)
do not bother about closing files properly.
.PP
At program startup, three text streams are predefined and need not be
opened explicitly \(em
-.I standard input
+.I standard input
(for reading conventional input), \(em
-.I standard output
+.I standard output
(for writing conventional input), and
.I standard error
-(for writing diagnostic output). These streams are abbreviated
+(for writing diagnostic output).
+These streams are abbreviated
.IR stdin , stdout
and
.IR stderr .
.PP
Output streams that refer to terminal devices are always line buffered by
default; pending output to such streams is written automatically whenever
-an input stream that refers to a terminal device is read. In cases where a
+an input stream that refers to a terminal device is read.
+In cases where a
large amount of computation is done after printing part of a line on an
output terminal, it is necessary to
.BR fflush (3)
.TP
.B freopen
stream open functions
-.\" Not on Linux:
+.\" Not on Linux:
.\" .TP
.\" .B fropen
.\" open a stream