Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное
- Название:Язык программирования Си. Издание 3-е, исправленное
- Автор:
- Жанр:
- Издательство:Невский Диалект
- Год:2001
- Город:Санкт-Петербург
- ISBN:0-13-110362-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное краткое содержание
Книга широко известных авторов, разработчиков языка Си, переработанная и дополненная с учетом стандарта ANSI для языка Си, 2-е английское издание которой вышло в 1988 году, давно стала классикой для всех изучающих и/или использующих как Си, так и Си++. Русский перевод этой книги впервые был выпущен изд- вом "Финансы и статистика" в 1992 г. и с тех пор пользуется неизменным спросом читателей.
Для настоящего третьего русского издания перевод заново сверен с оригиналом, в него внесены некоторые поправки, учитывающие устоявшиеся за прошедшие годы изменения в терминологии, а так же учтены замечания, размещенные автором на странице http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html.
Для программистов, преподавателей и студентов.
Издание подготовлено при участии издательства "Финансы и статистика"
Язык программирования Си. Издание 3-е, исправленное - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
int feof(FILE *stream);
feofвозвращает ненулевое значение, если для потока stream установлен индикатор конца файла.
int ferror(FILE *stream);
ferrorвозвращает ненулевое значение, если для потока stream установлен индикатор ошибки.
void perror(const char *s);
perror(s) печатает s и зависимое от реализации сообщение об ошибке, соответствующее целому значению в errno , т. е. делает то же, что и обращение к функции fprintf вида
fprintf(stderr, "%s: %s\n", s, "сообщение об ошибке")
См. strerror в параграфе B3.
B2. Проверки класса символа: ‹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 ).
Помимо перечисленных есть две функции, приводящие буквы к одному из регистров:
int tolower(int c) – переводит c на нижний регистр;
int toupper(int c) - переводит c на верхний регистр.
Если c - буква на верхнем регистре, то tolower (c) выдаст эту букву на нижнем регистре; в противном случае она вернет c . Если c - буква на нижнем регистре, то toupper (c) выдаст эту букву на верхнем регистре; в противном случае она вернет c .
B3. Функции, оперирующие со строками:
Имеются две группы функций, оперирующих со строками. Они определены в заголовочном файле . Имена функций первой группы начинаются с букв str , второй - с mem . Если копирование имеет дело с объектами, перекрывающимися по памяти, то, за исключением memmove, поведение функций не определено. Функции сравнения рассматривают аргументы как массивы элементов типа unsigned char .
В таблице на с. 321 переменные s и t принадлежат типу char * , cs и ct – типу const char * , n - типу size_t , а c - значение типа int , приведенное к типу char .
Последовательные вызовы strtokразбивают строку s на лексемы. Ограничителем лексемы служит любой символ из строки ct . В первом вызове указатель s не равен NULL. Функция находит в строке s первую лексему, состоящую из символов, не входящих в ct ; ее работа заканчивается тем, что поверх следующего символа пишется '\0' и возвращается указатель на лексему. Каждый последующий вызов, в котором указатель s равен NULL, возвращает указатель на следующую лексему, которую функция будет искать сразу за концом предыдущей. Функция strtok возвращает NULL, если далее никакой лексемы не обнаружено. Параметр ct от вызова к вызову может варьироваться.
Здесь и ниже под такими выражениями как cscs меньше (больше) ct , если первый несовпавший элемент в cs арифметически меньше (больше) соответствующего элемента из ct .— Примеч. ред.
char * strcpy(s,ct) | копирует строку ct в строку s , включая '\0'; возвращает s |
char * strncpy(s,ct,n) | копирует не более n символов строки ct в s ; возвращает s . Дополняет результат символами '\0', если символов в ct меньше n |
char * strcat(s,ct) | приписывает ct к s ; возвращает s |
char * strncat(s,ct,n) | приписывает не более n символов ct к s , завершая s символом '\0'; возвращает s |
char strcmp(cs,st) | сравнивает cs и ct ; возвращает <0, если cs0, если cs>ct ( I.B.: вообще-то, функция возвращает int ) |
char strncmp(cs,ct) | сравнивает не более n символов cs и ct ; возвращает <0, если cs0, если cs>ct ( I.B.: тоже int должна возвращать ) |
char * strchr(cs,c) | возвращает указатель на первое вхождение c в cs или, если такового не оказалось, NULL |
char * strrchr(cs,c) | возвращает указатель на последнее вхождение c в cs или, если такового не оказалось, NULL |
size_t strspn(cs,ct) | возвращает длину начального сегмента cs , состоящего из символов, входящих в строку ct |
size_t strcspn(cs,ct) | возвращает длину начального сегмента cs , состоящего из символов, не входящих в строку ct |
char * strpbrk(cs,ct) | возвращает указатель в cs на первый символ, который совпал с одним из символов, входящих в ct , или, если такового не оказалось, NULL |
char * strstr(cs, ct) | возвращает указатель на первое вхождение ct в cs или, если такового не оказалось, NULL |
size_t strlen(cs) | возвращает длину cs |
char * strerror(n) | возвращает указатель на зависящую от реализации строку, соответствующую номеру ошибки n |
char * strtok(s, ct) | strtok ищет в s лексему, ограниченную символами из ct ; более подробное описание этой функции см. ниже |
Функции mem...предназначены для манипулирования с объектами как с массивами символов; их назначение - получить интерфейсы к эффективным программам. В приведенной ниже таблице s и t принадлежат типу void * ; cs и ct - типу const void * ; n - типу size_t ; а c имеет значение типа int , приведенное к типу char .
void * memcpy(s,ct, n) | копирует n символов из ct в s и возвращает s |
void * memmove(s,ct,n) | делает то же самое, что и memcpy , но работает и в случае "перекрывающихся" объектов. |
int memcmp(cs, ct, n) | сравнивает первые n символов cs и ct ; выдает тот же результат, что и функция strcmp |
void * memchr(cs, c, n) | возвращает указатель на первое вхождение символа c в cs или, если среди первых n символов c не встретилось, NULL |
void * memset(s, c, n) | размещает символ c в первых n позициях строки s и возвращает s |
B4. Математические функции:
Интервал:
Закладка: