Стандартная библиотека содержит функцию FGETS, совершен-но аналогичную функции GETLINE, которую мы использовали навсем протяжении книги. В результате обращения FGETS(LINE, MAXLINE, FP) следующая строка ввода (включая символ новой строки) считы-вается из файла FP в символьный массив LINE; самое большоеMAXLINE_1 символ будет прочитан. Результирующая строка за-канчивается символом \ 0. Нормально функция FGETS возвращаетLINE; в конце файла она возвращает NULL. (Наша функцияGETLINE возвращает длину строки, а при выходе на конец файла- нуль). Предназначенная для вывода функция FPUTS записываетстроку (которая не обязана содержать символ новой строки) вфайл: FPUTS(LINE, FP) Чтобы показать, что в функциях типа FGETS и FPUTS нетничего таинственного, мы приводим их ниже, скопированныминепосредственно из стандартной библиотеки ввода-вывода: #INCLUDE <STDIO.H> CHAR *FGETS(S,N,IOP) /*GET AT MOST N CHARS FROM IOP*/ CHAR *S; INT N; REGISTER FILE *IOP; \( REGISTER INT C; REGISTER CHAR *CS; CS = S; WHILE(--N>0&&(C=GETC(IOP)) !=EOF) IF ((*CS++ = C)=='\N') BREAK; *CS = '\0'; RETURN((C==EOF && CS==S) 7 NULL : S); \) FPUTS(S,IOP) /*PUT STRING S ON FILS IOP*/ REGISTER CHAR *S; REGISTER FILE *IOP; \( REGISTER INT C; WHILE (C = *S++) PUTC(C,IOP); \) Упражнение 7-3 --------------- Напишите программу сравнения двух файлов, которая будетпечатать первую строку и позицию символа, где они различают-ся. Упражнение 7-4 --------------- Переделайте программу поиска заданной комбинации симво-лов из главы 5 таким образом, чтобы в качестве ввода исполь-зовался набор именованных файлов или, если никакие файлы неуказаны как аргументы, стандартный ввод. Следует ли печататьимя файла при нахождении подходящей строки? Упражнение 7-5 -------------- Напишите программу печати набора файлов, которая начина-ет каждый новый файл с новой страницы и печатает для каждогофайла заголовок и счетчик текущих страниц.