11 (Ic > 0 && '.Revflg));
1
/*
* обмен строк
*/
static void swap(iJ) register int i, j; /* элементы массива строк */
char *strcpy();
char temp [LINESIZE];
strcpy(temp. Line [i]);
strcpy(Line [i], Lme [j]);
strepy(Line [j], temp);
Структура программы 59
Пояснения к программе
А Поименованные константы, используемь-е во всей программе, обычно помещаются в отдельный файл, включаемый в другие файлы программы по мере необходимости. Поэтому при изменении этих параметров программы будет затронут только один файл.
В Включаемые файлы обычно помещаются в начало некоторого файла программы. Файл stdio h содержит описания файлов stdm. stdout и константы NULL, необходимых для использования функций fgets() и fputsQ
С Описания внешних переменных обычно размещаются в начале файла. В данной программе определены глобальный массив буфера строк и глобальный признак направления сортировки.
D Если функция main() использует формальные параметры, то они должны быть описаны. Функция main() выполняется первой.
Е Типы функций, вызываемых в теле функции, обычно описываются в начале тела функции.
F Переменная numlmes описана как локальная в блоке автоматическая целая переменная
G По соглашению первый аргумент argv, передаваемый функции main(), является именем программы; argv [l] — это второй аргумент и argv[l] [О] - это первый символ второго аргумента. Обратите внимание, что перед обращением к argv [l ] [0] проверяется число аргументов argc, так как при отсутствии второго аргумента выражение argv [l] [О] не имеет смысла.
И Функция rdlmesQ возвращает целое число прочитанных строк, так как она определена как имеющая тип mt. Прилагательное static указывает, что функция используется только в данном файле.
/ Переменная i определена как локальная в блоке. Описание register — это попытка ускорить выполнение цикла for
J Поскольку функция fgetsO возвращает значение типа char *,то это значение должно сравниваться с указателем на символ. Поэтому нулевой указатель NULL преобразуется к типу (char *).