freopen() Reassign a File Pointer
#include <stdio.h>
FILE *freopen(pathname,type,stream);
char *pathname; Pathname of new file
char *type; Type of access permitted
FILE *stream: Pointer to file structure
freopen() closes the file associated with stream and reassigns
'stream' to the file specified by 'pathname'. The new file is opened
with the access specified by 'type':
"r" Open for reading only. The file must exist.
"w" Create a new file for writing, or open an existing file
for writing. Use with care: If the file already exists,
its contents will be destroyed.
"a" Append. Open for writing at the end-of-file, or create
for writing if the file doesn't exist. Existing data
cannot be overwritten in this mode.
"r+" Update. Open an existing file for reading and writing;
the file must exist.
"w+" Open an empty file for reading and writing. Use with
care: if the file exists, its contents will be destroyed.
"a+" Open for reading and appending; create the file if it
doesn't exist. All write operations take place at the
end of the file; existing data cannot be overwritten.
The following characters may be appended to the above 'types' to
specify the translation mode for the new lines:
t Open in text (translated) mode; The CR-LF pair is
translated to a single LF on input; LF is translated to
CR-LF on output.
b Open in binary (untranslated) mode. The above
translation is suppressed.
If 't' or 'b' is not specified, the translation mode is defined by
the default mode variable '_fmode'. '_fmode' can be set to O_BINARY,
binary mode, or O_TEXT, text mode. These constants are defined in
<fcntl.h>.
Returns: A pointer to the open stream. NULL is returned on error.
Notes: Both reading and writing are allowed when using "r+",
"w+" or "a+". However, you must have an intervening
fseek or rewind operation when switching between reading
and writing (or vice versa).
-------------------------------- Example ---------------------------------
The following statements reassign 'stdout' to "data2".
#include <stdio.h>
FILE *stream;
char ch;
main()
{
stream = freopen("data2","w+",stdout);
while ((ch = fgetchar()) != '\n')
fputchar(ch);
fclose(stream);
}
Seealso:
This page last updated on Fri Nov 30 10:48:32 MSK 2001
Copyright © 1992-2001, Vitaly Filatov, Moscow, Russia
Webmaster