Перенаправление стандартного ввода-вывода

В консольном режимесуществует понятие стандартных файловых потоков: stdin - ввод (по умолчанию - клавиатура), stdout - вывод (по умолчанию - консоль), stderr- вывод сообщений об ошибках (по умолчанию - консоль).

Эти потоки имеют тип FILE * , и их удобство в том, что их можно перенаправлять функцией freopen() , например:

 

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

 

Теперь все результаты работы программы будут выводиться в файл results.txt так же, как они выводились бы на экран консоли.

 

Замечание. В случае перенаправления stdin не рекомендуется при вводе пользоватьсяfflush(), т.к. с файлом она работает иначе, чем с клавиатурой, из-за различной буферизации их в компьютере (см. также тему «Функции ввода-вывода»). Вместо нее надо использовать другие средства. Например, если после scanf() функция gets() вводит пустую строку, можно дважды вызывать gets().