#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;
}
Зависимые функции
fopen() fclose()