char *fgets(char *line, int maxline, FILE *fp)
Функция
Функция вывода fputs
пишет строку (которая может и не заканчиваться символом новой строки) в файл.int fputs(char *line, FILE *fp)
Эта функция возвращает EOF, если возникла ошибка, и неотрицательное значение в противном случае.
Библиотечные функции gets
и puts подобны функциямЧтобы показать, что ничего особенного в функциях вроде
/* fgets: получает не более n символов из iop */
char *fgets(char *s, int n, FILE *iop) {
register int c;
register char *cs;
cs = s;
while (--n › 0 && (с = getc(iop)) != EOF)
if ((*cs++ = c) == '\n')
break;
*cs= '\0';
return (c == EOF && cs == s) ? NULL : s;
}
/* fputs: посылает строку s в файл iop */
int fputs(char *s, FILE *iop)
{
int c;
while (c = *s++)
putc(c, iop);
return ferror(iop) ? EOF : 0;
}
Стандарт определяет, что функция
С помощью
/* getline: читает строку, возвращает ее длину */
int getline(char *line, int max)
{
if (fgets(line, max, stdin) == NULL)
return 0;
else
return strlen(line);
}
Упражнение 7.6
. Напишите программу, сравнивающую два файла и печатающую первую строку, в которой они различаются.Упражнение 7.7
. Модифицируйте программу поиска по образцу из главы 5 таким образом, чтобы она брала текст из множества именованных файлов, а если имен файлов в аргументах нет, то из стандартного ввода. Будет ли печататься имя файла, в котором найдена подходящая строка?Упражнение 7.8
. Напишите программу, печатающую несколько файлов. Каждый файл должен начинаться с новой страницы, предваряться заголовком и иметь свою нумерацию страниц.7.8 Другие библиотечные функции
В стандартной библиотеке представлен широкий спектр различных функций. Настоящий параграф содержит краткий обзор наиболее полезных из них. Более подробно эти и другие функции описаны в приложении B.
7.8.1 Операции со строками
Мы уже упоминали функции
strcat(s,t)
- приписываетstrncat(s,t,n)
- приписываетstrcmp(s,t)
- возвращает отрицательное число, нуль или положительное число дляstrncmp(s,t,n)
- делает то же, что иstrcpy(s,t)
- копируетstrncpy(s,t,n)
- копирует не болееstrlen(s)
- возвращает длинуstrchr(s,c)
- возвращает указатель на первое появление символаstrrchr(s,c)
- возвращает указатель на последнее появление символа7.8.2 Анализ класса символов и преобразование символов
Несколько функций из библиотеки ‹ctype.h› выполняют проверки и преобразование символов. Далее, до конца пункта, переменная
isalpha(c)
- не нуль, еслиisupper(c)
- не нуль, еслиislower(c)
- не нуль, если