Программирование на C и C++

Онлайн справочник программиста на C и C++

freopen

FILE *freopen(const char *fname, const char *mode, FILE *stream)

Прототип: 
Описание: 


Функция freopen() используется для связывания существующего потока с новым файлом. Новое имя файла указывается аргументом fname, режим доступа — аргументом mode, а поток, который надо связать с новым именем, — аргументом stream. В строке mode используется тот же формат, что и для функции fopen().

При вызове функция freopen() прежде всего пытается закрыть файл, который в данный момент связан с потоком stream. Однако если закрыть файл не удается, попытка связать поток с новым именем продолжается.

В случае успеха функция freopen() возвращает указатель на поток stream и NULL — в против­ном случае.

Основное назначение freopen() — перенаправлять системно-определенные файлы stdin, stdout и stderr в какой-нибудь другой файл.

Пример: 
Приведенная здесь программа использует freopen() для перенаправления потока stdout в файл под названием OUT. Поскольку printf() выполняет запись в stdout, первое сообщение выводится на экран, а второе записывается в файл на диске.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
printf("This will display on the screen\n");
if ((fp=freopen("OUT", "w", stdout))==NULL) {
printf("Cannot open file.\n");
exit(1);
}
printf ("This will be written to the file OUT");
fclose(fp);
return 0;
}