#include <stdio.h> FILE *freopen(const char *fname, const char *mode, FILE *stream);
Функция freopen() связывает существующий поток с другим файлом. Имя нового файла задается параметром fname, режим доступа — параметром mode, a переназначаемый поток определяется указателем stream. Возможные значения строки mode — те же, что и для функции fopen() (полное их описание можно найти в разделе, посвященном описанию fopen).
В версии C99 к параметрам fname, mode и stream применен квалификатор restrict.
При вызове функция freopen() сначала пытается закрыть файл, который в данный момент связан с потоком stream. Ho даже если этот файл закрыть не удается, freopen() открывает другой файл.
При успешном выполнении функция freopen() возвращает указатель на поток, а в противном случае — нулевой указатель.
Чаще всего функция freopen() используется для перенаправления таких определенных системой файлов, как stdin, stdout и stderr, в какой-то другой.
Приведенная здесь программа использует функцию freopen(), чтобы перенаправить поток stdout в файл с названием OUT. Первое сообщение программы выводится на экран, а второе, перенаправленное, записывается функцией freopen(), в файл на диске.
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; printf("Это сообщение появится на экране.\n"); if((fp=freopen("OUT", "w" ,stdout))==NULL) { printf("Не удается открыть файл.\n"); exit(1); } printf("Это сообщение будет записано в файл OUT."); fclose(fp); return 0; }