Язык С

Подсчет строк


Следующая программа подсчитывает количество строк в файле ввода. Предполагается, что строки ввода заканчиваются символом новой строки \N, скрупулезно добавленным к каждой выписанной строке. MAIN() /* COUNT LINES IN INPUT */ { INT C,NL;

NL = 0; WHILE ((C = GETCHAR()) != EOF) IF (C =='\N') ++NL; PRINTF("%D\N", NL); }

Тело WHILE теперь содержит оператор IF , который в свою очередь управляет оператором увеличения ++NL. Оператор IF проверяет заключенное в круглые скобки условие и, если оно истинно, выполняет следующий за ним оператор /или группу операторов, заключенных в фигурные скобки/. Мы опять исполь- зовали сдвиг вправо, чтобы показать, что чем управляет. Удвоенный знак равенства == является обозначением в языке "C" для "равно" /аналогично .EQ. В фортране/. Этот символ введен для того, чтобы отличать проверку на равенство от одиночного =, используемого при присваивании. Поскольку в типичных "C" - программах знак присваивания встречается при- мерно в два раза чаще, чем проверка на равенство, то естест- венно, чтобы знак оператора был вполовину короче. Любой отдельный символ может быть записан внутри оди- ночных кавычек, и при этом ему соответствует значение, рав- ное численному значению этого символа в машинном наборе сим- волов; это называется символьной константой. Так, например, 'A' - символьная константа; ее значение в наборе символов ASCII /американский стандартный код для обмена информацией/ равно 65, внутреннему представлению символа а. Конечно, 'A' предпочтительнее, чем 65: его смысл очевиден и он не зависит от конкретного машинного набора символов. Условные последовательности, используемые в символьных строках, также занимают законное место среди символьных кон- стант. Так в проверках и арифметических выражениях '\N' представляет значение символа новой строки. Вы должны твердо уяснить, что '\N' - отдельный символ, который в выражениях эквивалентен одиночному целому; с другой стороны "\N" - это символьная строка, которая содержит только один символ. Воп- рос о сопоставлении строк и символов обсуждается в главе 2.

Упражнение 1-6

---------------- Напишите программу для подсчета пробелов, табуляций и новых строк.

Упражнение 1-7

---------------- Напишите программу, которая копирует ввод на вывод, за- меняя при этом каждую последовательность из одного или более пробелов на один пробел.



    Содержание раздела