Язык программирования Си. Издание 3-е, исправленное
Шрифт:
putc делает то же, что и fputc, но в отличие от последней, если putc– макрос, значение stream может браться более одного раза.
putchar(c) делает тоже, что putc(c, stdout).
puts пишет строку s и символ новой строки в stdout. Возвращает EOF в случае ошибки, или неотрицательное значение, если запись прошла нормально.
ungetc отправляет символ c (переведенный в unsigned char) обратно в stream; при следующем чтении из stream он будет получен снова. Для каждого потока вернуть можно не более одного символа. Нельзя возвращать EOF. В качестве результата ungetc выдает отправленный назад символ или, в случае ошибки, EOF.
B1.5. Функции прямого ввода-вывода
fread читает из потока stream в массив ptr не более nobj объектов размера size. Она возвращает количество прочитанных объектов, которое может быть меньше заявленного. Для индикации состояния после чтения следует использовать feof и ferror.
fwrite пишет из массива ptr в stream nobj объектов размера size; возвращает число записанных объектов, которое в случае ошибки меньше nobj.
B1.6. Функции позиционирования файла
fseek устанавливает позицию для stream; последующее чтение или запись будет производиться с этой позиции. В случае бинарного файла позиция устанавливается со смещением offset– относительно начала, если origin равен SEEK_SET; относительно текущей позиции, если origin равен SEEK_CUR; и относительно конца файла, если origin равен SEEK_END. Для текстового файла offset должен быть нулем или значением, полученным с помощью вызова функции ftell. При работе с текстовым файлом origin всегда должен быть равен SEEK_SET.
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) | шестнадцатеричная цифра |