Лабораторный практикум по основам языка C/С++ |
Тема 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;
}