Язык программирования Си. Издание 3-е, исправленное
Шрифт:
fwrite пишет из массива ptr в stream nobj объектов размера size; возвращает число записанных объектов, которое в случае ошибки меньше nobj.
B1.6. Функции позиционирования файла
fseek устанавливает позицию для stream; последующее чтение
ftell возвращает текущую позицию потока stream или -1L, в случае ошибки.
rewind(fp) делает то же, что и fseek(fp, 0L, SEEK_SET); clearerr(fp).
fgetpos записывает текущую позицию потока stream в *ptr для последующего использования ее в fsetpos. Тип fpos_t позволяет хранить такого рода значения, В случае ошибки fgetpos возвращает ненулевое значение.
fsetpos устанавливает позицию в stream, читая ее из *ptr, куда она была записана ранее с помощью fgetpos. В случае ошибки fsetpos возвращает ненулевое значение.
B1.7. Функции обработки ошибок
Многие функции библиотеки в случае ошибки или конца файла устанавливают индикаторы состояния. Эти индикаторы можно проверять и изменять. Кроме того, целое выражение errno (объявленное в <errno.h>) может содержать номер ошибки, который дает дополнительную информацию о последней из обнаруженных ошибок.
clearerr очищает индикаторы конца файла и ошибки потока stream.
feof возвращает ненулевое значение, если для потока stream установлен индикатор конца файла.
ferror возвращает ненулевое значение, если для потока stream установлен индикатор ошибки.
perror(s) печатает s и зависимое от реализации сообщение об ошибке, соответствующее целому значению в errno, т. е. делает то же, что и обращение к функции fprintf
См. strerror в параграфе B3.
B2. Проверки класса символа: ‹ctype.h›
Заголовочный файл <ctype.h> объявляет функции, предназначенные для проверок символов. Аргумент каждой из них имеет тип int и должен либо представлять собой EOF, либо быть значением unsigned char, приведенным к int; возвращаемое значение тоже имеет тип int. Функции возвращают ненулевое значение ("истина"), когда аргумент c удовлетворяет описанному условию или принадлежит указанному классу символов, и нуль в противном случае.
isalnum(c) | isalpha(c) или isdigit(c) есть истина |
isalpha(c) | isupper(c) или islower(c) есть истина |
iscntrl(c) | управляющий символ |
isdigit(c) | десятичная цифра |
isgraph(c) | печатаемый символ кроме пробела |
islower(c) | буква нижнего регистра |
isprint(c) | печатаемый символ, включая пробел |
ispunct(c) | печатаемый символ кроме пробела, буквы или цифры |
isspace(c) | пробел, смена страницы, новая строка, возврат каретки, табуляция, вертикальная табуляция |
isupper(c) | буква верхнего регистра |
isxdigit(c) | шестнадцатеричная цифра |
В наборе семибитовых ASCII-символов печатаемые символы находятся в диапазоне от 0x20 (' ') до 0x7E ('~'); управляющие символы - от 0 (NUL) до 0x1F (US) и 0x7F (DEL).
Помимо перечисленных есть две функции, приводящие буквы к одному из регистров:
Если c– буква на верхнем регистре, то tolower(c) выдаст эту букву на нижнем регистре; в противном случае она вернет c. Если c– буква на нижнем регистре, то toupper(c) выдаст эту букву на верхнем регистре; в противном случае она вернет c.