Streams are a portable way of reading and writing data. They provide a flexible and efficient means of I/O.
A Stream is a file or a physical device (e.g. printer or monitor) which is manipulated with a pointer to the stream.
There exists an internal C data structure, FILE, which represents all streams and is defined in stdio.h. We simply need to refer to the FILE structure in C programs when performing I/O with streams.
We just need to declare a variable or pointer of this type in our programs.
We do not need to know any more specifics about this definition.
We must open a stream before doing any I/O,
then access it
and then close it.
Stream I/O is BUFFERED: That is to say a fixed ``chunk'' is read from or written to a file via some temporary storage area (the buffer). This is illustrated in Fig. . NOTE the file pointer actually points to this buffer.
Fig. Stream I/O Model
This leads to efficient I/O but beware: data written to a buffer does not appear in a file (or device) until the buffer is flushed or written out. (n does this). Any abnormal exit of code can cause problems.