Тема 9.2. Переопределение оператора вывода в поток в C++

Обычно стандартные потоки направляются к консоли, но в средах, которые поддерживают перенаправление ввода/вывода, они могут быть перенаправлены операционной системой на другое устройство. (Перенаправление ввода/вывода поддерживается, например, такими операционными системами, как Windows, DOS, UNIX и OS/2.)

Для перенаправления стандартных потоков можно воспользоваться функцией freopen(). Эта функция связывает имеющийся поток с новым файлом. Так что она вполне может связать с новым файлом и стандартный поток. Общий вид этой функции представлен ниже:

FILE *freopen(const char *имя_файла, const char *режим, FILE *поток);

где имя_файла — это указатель на имя файла, который требуется связать с потоком, на который указывает указатель поток. Файл открывается в режиме режим; этот параметр может принимать те же значения, что и соответствующий параметр функции fopen(). Если функция freopen() выполнилась успешно, то она возвращает поток, а если встретились ошибки, — то NULL.

В следующей программе показано использование функции freopen() для перенаправления стандартного потока вывода stdout в файл с именем myfile.txt.

#include 

int main(void)
{
  char str[80];

  freopen("myfile.txt", "w", stdout);

  printf("Введите строку: ");
  gets(str);
  printf(str);

  return 0;
}