Классификация системных вызовов и библиотечных функций
Системные вызовы можно достаточно естественно разделить на следующие категории:
- Доступ к файлам.
- Действия с файлами и каталогами.
- Управление процессами.
- Управление окружением и получение информации о его состоянии.
Библиотечные функции можно разделить на категории в зависимости от разделов Справочника программиста, в которых находятся их описания. Однако первая часть раздела 3 (3C и 3S) содержит описания весьма большого числа функций, и имеет смысл провести дальнейшую классификацию.
- Функции подкласса 3S предоставляют средства эффективного буферизованного ввода/вывода.
- Функции подкласса 3C выполняют различные задачи. Их объединяет то, что они хранятся в библиотеке libc.a. Можно разделить эти функции на следующие группы:
- Действия с цепочками символов.
- Преобразование символов.
- Классификация символов.
- Управление окружением.
- Управление памятью.
В следующей таблице приведен список функций стандартного ввода/вывода. Все они описаны в разделе 3 Справочника программиста. В Справочнике часто в одной статье описывается не одна, а несколько связанных функций. В таблице приводится соответствие названий статей и описываемых в них функций: в левой колонке находится название статьи, а все остальные имена в данной стро- ке - это имена функций, описываемых в статье.
Имена функций | Назначение |
fclose fflush | Закрыть поток или вытолкнуть его буфера. |
ferror feof clearerr fileno | Опрос состояния потока. |
fopen freopen fdopen | Открыть поток. |
fread fwrite | Двоичный ввод/вывод. |
fseek rewind ftell | Установка текущей позиции потока. |
getc getchar fgetc getw | Считывание символа или слова из потока. |
gets fgets | Считывание цепочки символов из потока. |
popen pclose | Создание и ликвидация канала между программой и командой. |
printf fprintf sprintf | Вывод с преобразованием по формату. |
putc putchar fputc putw | Запись в поток символа или слова. |
puts fputs | Запись в поток цепочки символов. |
scanf fscanf sscanf | Ввод с преобразованием по формату. |
setbuf setvbuf | Назначение буферов для потока. |
system | Выполнение команды shell'а. |
tmpfile | Создание временного файла. |
tmpnam tempnam | Создание имен временных файлов. |
ungetc | Вставка символа в поток ввода. |
vprintf vfprintf vsprintf | Форматный вывод списка аргументов, заданного по правилам varargs. |
При использовании всех функций, перечисленных в этой таблице, необходимо включить в программу оператор
#include <stdio.h>
Следующая таблица содержит список функций, предназначенных для обработки цепочек символов. В Справочнике программиста они описаны в одной статье string(3C).
Операции над цепочками символов
Имена функций | Назначение |
strcat (s1, s2) | Добавить копию s2 к концу s1. |
strncat (s1, s2, n) | Добавить n символов из s2 к концу s1. |
strcmp (s1, s2) | Сравнить две цепочки символов. Возвращает целое число, меньшее, большее или равное нулю в зависимости от того, предшествует ли s1 лексикографически s2, следует за ней или совпадает с ней. |
strncmp (s1, s2, n) | Сравнить n символов из двух цепочек. |
strcpy (s1, s2) | Копировать символы из s2 в s1 до тех пор, пока не будет скопирован нулевой байт (\0). |
strncpy (s1, s2, n) | Скопировать n символов из s2 в s1. Если s2 содержит более n символов, она будет усечена, если меньше n - в s1 будут добавлены нулевые байты. |
strdup (s) | Возвращает указатель на новую цепочку символов, являющуюся копией s. |
strchr (s, c) | Возвращает указатель на первое вхождение символа c в цепочку s, или NULL, если s не содержит c. |
strrchr (s, c) | Возвращает указатель на последнее вхождение символа c в цепочку s, или NULL, если s не содержит c. |
strlen (s) | Возвращает число символов в s до ближайшего нулевого байта. |
strpbrk (s1, s2) | Возвращает указатель на первое вхождение в s1 какого-либо символа из s2, либо NULL, если s1 не содержит ни одного символа из s2. |
strspn (s1, s2) | Возвращает длину начального фрагмента s1, состоящего только из символов, содержащихся в s2. |
strcspn (s1, s2) | Возвращает длину начального фрагмента s1, состоящего только из символов, не содержащихся в s2. |
strtok (s1, s2) | Находит включение символов из s2 в s1. |
#include <string.h>
Включаемый файл <string.h> содержит внешние описания функций обработки цепочек символов.
Следующая таблица содержит список макросов, предназначенных для классификации ASCII-символов. В Справочнике программиста они описаны в статье ctype(3C).
Классификация символов
Имена функций | Назначение |
isalpha (c) | c - буква? |
isupper (c) | c - большая буква? |
islower (c) | c - малая буква? |
isdigit (c) | c - цифра: [0-9]? |
isxdigit (c) | c - шестнадцатеричная цифра: [0-9], [A-F] или [a-f]? |
isalnum (c) | c - алфавитно-цифровой символ (буква или цифра)? |
isspace (c) | c - пробел, табуляция, возврат каретки, перевод строки, вертикальная табуляция или символ перехода к новой странице? |
ispunct (c) | c - знак пунктуации (то есть не управляющий и не алфавитно-цифровой символ)? |
isprint (c) | c - печатный символ? [Коды таких символов располагаются в диапазоне от 040 (пробел) до 0176 (тильда).] |
isgraph (c) | c - печатный символ, но не пробел? |
iscntrl (c) | c - управляющий символ (код меньше 040) или символ забоя (0177)? |
isascii (c) | c является ASCII-символом (код меньше 0200)? |
#include <ctype.h>
Эти функции возвращают отличное от нуля значение, если указанное в правой части таблицы условие истинно, в противном случае возвращается нуль.
Следующие две таблицы содержат список функций и макросов, используемых для преобразования символов, целых чисел или цепочек символов из одного представления в другое.
Имена функций | Назначение |
ecvt fcvt gcvt | Преобразование вещественного числа в цепочку символов. |
l3tol ltol3 | Преобразование 3-байтного целого числа в длинное целое и обратно. |
strtod atof | Преобразование цепочки символов в вещественное число двойной точности. |
strtol atol atoi | Преобразование цепочки символов в целое число. |
toupper | Функция преобразования малой буквы в большую. |
_toupper | Макрос преобразования малой буквы в большую. |
tolower | Функция преобразования большой буквы в малую. |
_tolower | Макрос преобразования большой буквы в малую. |
toascii | Обнуляет у аргумента все биты, не являющиеся частью стандартного ASCII-символа; предназначен для достижения совместимости с другими системами. |
#include <ctype.h>