2. Имя выполняемой программы должно стоять слева от знака операции, а имя файла - справа от него.
3. При использовании этих операций ввод не может осуществляться более чем из одного файла, а вывод - более чем в один файл.
4. Обычно между именем и операцией пробелы не обязательны кроме тех редких случаев, когда используются некоторые символы специального назначения в интерпретаторе команд UNIX. Мы могли бы писать, например, так: getput4 < words, или, что более предпочтительно, getput4 < words.
Мы уже привели выше несколько примеров правильного использования операций переключения. Ниже дается несколько ошибочных примеров ( addupи count- выполняемые программы, a fishи stars- текстовые файлы).
fish > stars Нарушение правила 1
addup < count Нарушение правила 1
stars > count Нарушение правила 2
addup < fish < stars Нарушение правила 3
count > stars fish Нарушение правила 3
B OC UNIX применяются также операция >>, позволяющая добавлять данные в конец существующего файла, и операция "канал" ( |), связывающая файл вывода одной программы с вводом другой. Для получения более детальной информации обо всех этих операциях вам необходимо обратиться к руководству по ОС UNIX (по аналогии с этим нам приходит в голову название "ОС UNIX: руководство для начинающих").
Рассмотрим еще один пример: напишем очень простую программу, шифрующую сообщения; с этой целью мы немного изменим программу ввод-вывод4и получим
/* простой шифр */
/* заменяет каждый символ текста */
/* следующим по порядку из кода ASCII */
#include
main( )
{ int ch;
while ((ch = getchar ( )) ! = EOF)
putchar (ch + 1);
}
Функция putchar( )переводит целое " ch + 1" в соответствующий символ. Выполните теперь компиляцию программы и поместите выполняемый объектный код в файл с именем simplecode. Затем занеси те приведенные ниже строки в файл с именем original. (Для этого можно воспользоваться системным текстовым редактором или, как было показано ранее, программой ввод-вывод4) .
Good spelling is an aid
to clear writing.
Теперь введите команду
simplecode < original
Результат должен выглядеть приблизительно так:
!!!!!Hppe!tqfmmjoh!jt!bo!bje>Kup!dmfbs!xsjujohl> k
Буква Gзаменится на Н, она ри т.д. Вас может удивить следующее: во-первых, что пробелы превратились в восклицательные знаки. Это служит напоминанием, что пробел - такой же символ, как и все остальные. Во-вторых, две строки слились в одну. Почему?
Операционные системы, отличные от ОС UNIX
Здесь мы главным образом рассмотрим, чем отличаются другие операционные системы от ОС UNIX; поэтому если вы пропустили предыдущий раздел, вернитесь назад и прочтите его.
Все отличия можно разделить на две группы:
1. В других операционных системах реализована операция переключения.
2. Компиляторы с языка Си предоставляют возможность использовать операцию переключения.
Мы не можем рассмотреть все возможные операционные системы, поэтому приведем пример только одной из них, но весьма широко распространенной. Это система MS-DOS 2; она вначале была просто "отпрыском" ОС СР/М, а сейчас самостоятельно развивается в сторону операционной системы XENIX, подобной ОС UNIX. В версию MS-DOS были введены операции переключения <и >; они работают в ней точно так же, как было описано в предыдущем разделе.
У нас нет возможности рассмотреть все компиляторы с языка Си. Однако в пяти из шести версий компилятора, предназначенных для микрокомпьютеров, с которыми мы имели дело, для указания операции переключения используются символы <и >. Операция переключения, реализуемая компилятором с языка Си, отличается от аналогичной операции, выполняемой ОС UNIX, в двух аспектах:
1. Указанная операция выполняется при работе программ, написанных только на Си, в то время как в ОС UNIX она может использоватъся при работе любой программы.
2. Между именем программы и знаком операции должен быть один пробел, а между знаком операции и именем файла пробел должен отсутствовать. Ниже приведен пример правильной команды:
input4
Комментарий
Операция переключения - это простое, но мощное средство. С ее помощью мы можем превратить нашу крошечную программу ввод-вывод4в инструмент для создания, чтения и копирования файлов. Данный способ служит иллюстрацией подхода, принятого в языке Си (и ОС UNIX) и заключающегося в конструировании простых средств, которые можно комбинировать различным образом для выполнения конкретных задач.
Читать дальше