На этом шаге мы рассмотрим способы переназначения устройств ввода/вывода.
В MS DOS клавиатура может быть заменена некоторым файлом с помощью обозначения <. Если, например, программа prog использует функцию getchar(), то по команде:
prog < infile
prog будет читать информацию из файла infile, а не с клавиатуры. Переназначение ввода делается так, что сама программа prog "не замечает" изменения. Переключение ввода остается незамеченным и в том случае, когда входная информация приходит из другой программы через механизм, называемый каналом.
Команда
otherprog | prog
запускает две программы, otherprog и prog, причем стандартный ввод для prog идет из стандартного вывода для otherprog.
Функция getchar() возвращает значение EOF, если она встречает в текущем вводе признак конца файла. В файле stdio.h определяется макроимя EOF равное -1. Рекомендуется все проверки на конец файла писать в терминах EOF, чтобы не зависеть от конкретной реализации.
Вывод символов можно осуществлять с помощью функции
putchar(c); ,
Вывод также можно перенаправить в некоторый файл с помощью обозначения >. Если prog использует putchar(), то команда
prog > outfile
Можно использовать и межпрограммный канал ввода/вывода. Команда
prog | anotherprog
замыкает стандартный вывод из prog на стандартный ввод в anotherprog, причем prog снова ничего не будет "знать" о перенаправлении.
Вывод, осуществляемый с помощью функции printf(), также поступает в стандартный вывод, и обращения к putchar() и printf() могут произвольно чередоваться.
На следующем шаге мы приступим к рассмотрению директив препроцессора.