FILE *fopen(const char *filename, const char *type);
FILE *freopen(const char *filename, const char *type, FILE *stream);
FILE *fdopen(int fildes, char *type);
Type is a character string having one of the following values:
In addition, each type may be followed by a ``+'' to have the file opened for reading and writing. ``r+'' positions the stream at the beginning of the file, ``w+'' creates or truncates it, and ``a+'' positions it at the end. Both reads and writes may be used on read/write streams, with the limitation that an fseek, rewind, or reading an end-of-file must be used between a read and a write or vice-versa.
Type may also be followed by a ``b'' to denote a binary file, though this has no effect on this system.
Freopen substitutes the named file in place of the open stream. It returns the original value of stream. The original stream is closed. The type argument is used just as in the fopen function.
Freopen is typically used to attach the preopened constant names, stdin, stdout, stderr, to specified files.
Fdopen associates a stream with a file descriptor obtained from open, dup, creat, or pipe(2). The type of the stream must agree with the mode of the open file. The meaning of the type flag is exactly as specified for fopen, except that ``w'' and ``w+'' do not cause truncation of the file. The file position indicator associated with the new stream is set to the position indicated by the file offset associated with the file descriptor.
The read/write types do not exist on all systems. Those systems without read/write modes will probably treat the type as if the ``+'' was not present. These are unreliable in any event.