Приложение 1. Стандартные библиотеки языка Си

В языке Си стандартные функции собраны в различных библиотеках. Для использования этих функций необходимо подключить к проекту соотаетствующие библиотеки с помощью конструкции #include. Ниже представлены некоторые библиотеки языка Си, а также их состав.

Таблица 19.

Библиотеки языка Си

Имя Назначение библиотеки
complex.h Набор функций для работы с комплексными числами
ctype.h Содержит функции, используемые для классификации символов по их типам или для конвертации между верхним и нижним регистрами независимо от используемой кодировки
errno.h Для проверки кодов ошибок, возвращаемых библиотечными функциями
iostream Содержит функции контроля чтения и записи стандартных потоков
limits.h Содержит заранее заданные константы, определяющие специфику реализации свойств целых типов
signal.h Функции для управления различными исключительными условиями
math.h Функции для вычисления основных математических функций
stdio.h Реализует основные возможности ввода и вывода в языке Си
stdlib.h Вспомогательные функции, которые могут быть использованы в разнообразных программах
string.h Для работы с различными видами строк
time.h Для конвертации между различными форматами времени и даты

 

Таблица 20.

Состав библиотеки complex.h

Имя функции Описание
cabs, cabsf, cabsl Абсолютное значение комплексного числа
cacos, cacosf, cacosl Комплексный арккосинус
cacosh, cacoshf, cacoshl Комплексный гиперболический арккосинус
carg, cargf, cargl Аргумент комплексного числа
casin, casinf, casinl Комплексный арксинус
casinh, casinhf, casinhl Комплексный гиперболический арксинус
catan, catanf, catanl Комплексный арктангенс
catanh, catanhf, catanhl Комплексный гиперболический арктангенс
ccos, ccosf, ccosl Комплексный косинус
ccosh, ccoshf, ccoshl Комплексный гиперболический косинус
cexp, cexpf, cexpl Комплексная экспонента
cimag, cimagf, cimagl Мнимая часть комплексного числа
clog, clogf, clogl Натуральный логарифм комплексного числа
conj, conjf, conjl Комплексное сопряжённое число
cpow, cpowf, cpowl Степень комплексного числа
cproj, cprojf, cprojl Проекция на римановскую сферу
creal, crealf, creall Действительная часть комплексного числа
csin, csinf, csinl Комплексный синус
csinh, csinhf, csinhl Комплексный гиперболический синус
csqrt, csqrtf, csqrtl Комплексный квадратный корень
ctan, ctanf, ctanl Комплексный тангенс
ctanh, ctanhf, ctanhl Комплексный гиперболический тангенс

 

Таблица 21.

Состав библиотеки ctype.h

Имя функции Проверяет, является ли аргумент…
isalnum …буквой или цифрой
isalpha …буквой
iscntrl …управляющим символом
isdigit …цифрой
isgraph …символом, имеющим графическое представление
islower …буквой в нижнем регистре
isprint …символом, который может быть напечатан
ispunct …символом, имеющим графическое представление, но не являющимся при этом буквой или цифрой
isspace …разделительным символом
isupper …буквой в верхнем регистре
isxdigit …цифрой шестнадцатиричной системы счисления

 

Таблица 22.

Состав библиотеки errno.h

Имя функции Описание
E2BIG Список аргументов слишком длинный
EACCES Отказ в доступе
EAGAIN Ресурс временно недоступен
EBADF Неправильный дескриптор файла
EBADMSG Неправильное сообщение
EBUSY Ресурс занят
ECANCELED Операция отменена
ECHILD Нет дочернего процесса
EDEADLK Обход тупика ресурсов
EDOM Ошибка области определения
EEXIST Файл существует
EFAULT Неправильный адрес
EFBIG Файл слишком велик
EINPROGRESS Операция в процессе выполнения
EINTR Прерванный вызов функции
EINVAL Неправильный аргумент
EIO Ошибка ввода-вывода
EISDIR Это каталог
EMFILE Слишком много открытых файлов
EMLINK Слишком много связей
EMSGSIZE Неопределённая длина буфера сообщения
ENAMETOOLONG Имя файла слишком длинное
ENFILE Слишком много открытых файлов в системе
ENODEV Нет такого устройства
ENOENT Нет такого файла в каталоге
ENOEXEC Ошибка формата исполняемого файла
ENOLCK Блокировка недоступна
ENOMEM Недостаточно памяти
ENOSPC Памяти на устройстве не осталось
ENOSYS Функция не реализована
ENOTDIR Это не каталог
ENOTEMPTY Каталог непустой
ENOTSUP Не поддерживается
ENOTTY Неопределённая операция управления вводом-выводом
ENXIO Нет такого устройства или адреса
EPERM Операция не разрешена
EPIPE Разрушенный канал
ERANGE Результат слишком велик
EROFS Файловая система только на чтение
ESPIPE Неправильное позиционирование
ESRCH Нет такого процесса
ETIMEDOUT Операция задержана
EXDEV Неопределённая связь

 

Таблица 23.

Состав библиотеки iostream.h

Имя функции Описание
cin Соответствует стандартному вводу. В общем случае он позволяет читать данные с терминала пользователя
cout Соответствует стандартному выводу. В общем случае он позволяет выводить данные на терминал пользователя
cerr Соответствует стандартному выводу для ошибок. В этот поток мы направляем сообщения об ошибках программы

 

Таблица 24.

Состав библиотеки limits.h

Имя Описание Типичное значение 32-битной программы Типичное значение 64-битной программы Стандартный минимум или максимум диапазона значений
CHAR_BIT Число бит в байте ≥ 8
SCHAR_MIN Минимальное значение для знакового char −128 −128 ≤ -127
SCHAR_MAX Максимальное значение для знакового char +127 +127 ≥ +127
UCHAR_MAX Максимальное значение для беззнакового char +255 +255 ≥ +255
CHAR_MIN Минимальное значение для char −128 −128 ≤ -127(если char представлено как знаковый char; иначе 0)
CHAR_MAX Максимальное значение для char +127 +127 ≥ +127 (если char представлено как знаковый char; иначе +255)
MB_LEN_MAX Максимальная многобайтовая длина символа по всем локалям различается, обычно от 4 различается, обычно от 4 ≥ 1
SHRT_MIN Минимальное значение для short int −32,768 −32,768 ≤ -32,767
SHRT_MAX Максимальное значение для short int +32,767 +32,767 ≥ +32,767
USHRT_MAX Максимальное значение для беззнакового short int +65,535 +65,535 ≥ +65,535
INT_MIN Минимальное значение для int −2,147,483,648 −2,147,483,648 ≤ -32,767
INT_MAX Максимальное значение для int +2,147,483,647 +2,147,483,647 ≥ +32,767
UINT_MAX Максимальное значение для беззнакового int +4,294,967,295 +4,294,967,295 ≥ +65,535
LONG_MIN Минимальное значение для long int −2,147,483,648 −9,223,372,036,854,775,808 ≤ -2,147,483,647
LONG_MAX Максимальное значение для long int +2,147,483,647 +9,223,372,036,854,775,807 ≥ +2,147,483,647
ULONG_MAX максимальное значение для беззнакового long int +4,294,967,295 +18,446,744,073,709,551,615 ≥ +4,294,967,295
LLONG_MIN Минимальное значение для long long int −9,223,372,036,854,775,808 −9,223,372,036,854,775,808 ≤ -9,223,372,036,854,775,807
LLONG_MAX Максимальное значение для long long int +9,223,372,036,854,775,807 +9,223,372,036,854,775,807 ≥ +9,223,372,036,854,775,807
ULLONG_MAX максимальное значение для беззнакового long long int +18,446,744,073,709,551,615 +18,446,744,073,709,551,615 ≥ +18,446,744,073,709,551,615

 

Таблица 25.

Состав библиотеки limits.h

Константа Значение Стандарты
SIGHUP Отбой POSIX
SIGINT Прерывание ANSI
SIGQUIT Выход POSIX
SIGILL Недопустимая инструкция ANSI
SIGABRT Самоостановка ANSI
SIGTRAP Перехват события POSIX
SIGIOT Перехват ввода-вывода 4.2 BSD
SIGEMT Перехват эмуляции 4.2 BSD
SIGFPE Исключение с плавающей запятой ANSI
SIGKILL Неперехватываемый сигнал завершения POSIX
SIGBUS Ошибка шины 4.2 BSD
SIGSEGV Нарушение сегментации ANSI
SIGSYS Неправильный аргумент в системный вызов 4.2 BSD
SIGPIPE Нарушение канала POSIX
SIGALRM Истечение времени POSIX
SIGTERM Заверешние ANSI
SIGUSR1 Пользовательский сигнал 1 POSIX
SIGUSR2 Пользовательский сигнал 2 POSIX
SIGCHLD Изменение статуса дочернего процесса POSIX
SIGCLD Аналогично SIGCHLD System V
SIGPWR Перезапуск после проблемы с питанием System V
SIGXCPU Ограничение процессорного времени POSIX

 

Таблица 26.

Состав библиотеки math.h

Имя функции Описание
acos арккосинус
asin арксинус
atan арктангенс
atan2 арктангенс с двумя параметрами
ceil округление до ближайшего большего целого числа
cos косинус
cosh гиперболический косинус
exp вычисление экспоненты
fabs абсолютная величина (числа с плавающей точкой)
floor округление до ближайшего меньшего целого числа
fmod вычисление остатка от деления нацело для чисел с плавающей точкой
frexp разбивает число с плавающей точкой на мантиссу и показатель степени.
ldexp умножение числа с плавающей точкой на целую степень двух
log натуральный логарифм
log10 логарифм по основанию 10
modf(x,p) извлекает целую и дробную части (с учетом знака) из числа с плавающей точкой
pow(x,y) результат возведения x в степень y, xy
sin синус
sinh гиперболический синус
sqrt квадратный корень
tan тангенс
tanh гиперболический тангенс

 

Таблица 27.

Состав библиотеки stdio.h

Имя функции Описание
Функции для файловых операций
fclose закрывает файл, ассоциированный с переданным ей значением FILE *
fopen, freopen, fdopen открывают файл для определенных типов чтения и записи
remove удаляет файл (стирая его)
rename переименовывает файл
rewind работает аналогично fseek(stream, SEEK_SET), вызванному для потока, со сбросом индикатора ошибок
tmpfile создает и открывает временный файл, удаляемый при закрытии через fclose()
Функции для операций ввода-вывода
clearerr очищает EOF и индикаторы ошибок для данного потока
feof проверяет, установлен ли индикатор EOF для данного потока
ferror проверяет, установлен ли индикатор ошибок для данного потока
fflush принудительно записывает вывод, предназначенный для помещения в буфер, в файл, ассоциированный с данным потоком
fgetpos сохраняет позицию указателя файла потока, ассоциированный с его первым аргументом (FILE *), в его второй аргумент (fpos_t *)
fgetc возвращает один символ из файла
fgets получает строку из файла (оканчивающуюся символом перевода строки или конца файла)
fputc записывает один символ в файл
fputs записывает строку в файл
ftell возвращает указатель позиции файла, который может быть передан fseek
fseek производит поиск по файлу
fsetpos устанавливает указатель позиции файла потока, ассоциированный с его первым аргументом (FILE *), как хранимый во втором его аргументе (fpos_t *)
fread читает данные из файла
fwrite записывает данные в файл
getc считывает и возвращает символ из данного потока и изменяет укащатель позиции файла; позволяет использоваться как макрос с теми же эффектами, что и fgetc, кроме того, что может вычислять поток более одного раза
getchar имеет аналогичный эффект, что и getc(stdin)
gets считывает символы из stdin до символа перевода строки и хранит их в своем единственном аргументе
printf, vprintf используются для вывода в стандартный поток вывода
fprintf, vfprintf используются для вывода в файл
sprintf, snprintf, vsprintf используются для вывода в массив типа char (Строка в языке Си)
perror записывает сообщение об ошибке в stderr
putc записывает и возвращает символ в поток и изменяет указатель позиции файла на него; можно использовать как макрос с теми же свойствами, что и fputc, кроме того, что он может обрабатывать поток более одного раза
putchar, fputchar аналогичны putc(stdout)
scanf, vscanf используются для ввода из стандартного потока ввода
fscanf, vfscanf используются для ввода из файла
sscanf, vsscanf используются для ввода из массива char (то есть Строка в языке Си)
setvbuf устанавливает режим буферизации для данного потока
tmpnam создает временное имя файла
ungetc помещает символ обратно в поток
puts выводит символьную строку в stdout

 

Таблица 28.

Состав библиотеки stdlib.h

Имя функции Описание Реализация
abort Ненормальное завершение программы void abort(void);
abs Модуль целого числа int abs(int i);
assert Макроопределение для вывода отладочных диагностических сообщений void assert(int expression);
atexit Запрос вызова функции при завершении работы программы int atexit(void (*function)(void);
atof, atoff Преобразование строки в значение типа double или float double atof(const char *s); float atoff(const char *s);
atii, atol Строка в целое int atoi(const char *s); long atol(const char *s);
atol Преобразовывает строку в long long atol(const char *s);
bsearsh Двоичный поиск void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
calloc Выделяет пространство для массивов void *calloc(size_t n, size_t s); void *calloc_r(void *reent, size_t <n>, <size_t> s);
div Деление двух целых div_t div(int n, int d);
ecvt, ecvtf, fcvt, fcvtf Преобразование double или float в строку char *ecvt(double val, int chars, int *decpt, int *sgn); char *ecvtf(float val, int chars, int *decpt, int *sgn);
gvcvt, gcvtf Форматируют double и float как строку char *gcvt(double val, int precision, char *buf); char *gcvtf(float val, int precision, char *buf);
ecvtbuf, fcvtbuf Double или float в строку char *ecvtbuf(double val, int chars, int *decpt, int *sgn, char *buf); char *fcvtbuf(double val, int decimals, int *decpt, int *sgn, char *buf);
exit Завершение выполнения программы void exit(int code);
getenv Поиск переменной окружения char *getenv(const char *name);
labs Модуль длинного целого long labs(long i);
ldiv Деление двyх длинных целых ldiv_t ldiv(long n, long d);
malloc, realloc, free Управление памятью void *malloc(size_t nbytes); void *realloc(void *aptr, size_t nbytes); void free(void *aptr);
mbtowc Минимальный преобразователь мультибайтов в широкие символы int mbtowc(wchar_t *pwc, const char *s, size_t n);
qsort Сортировка массива void qsort(void *base, size_t nmemb, size_t size,int (*compar)(const void *, const void *) );
rand, srand Псевдо-случайные числа int rand(void); void srand(unsigned int seed); int _rand_r(void *reent); void _srand_r(void *reent, unsigned int seed);  
strtod, strtodf Строка в double или float double strtod(const char *str, char **tail); float strtodf(const char *str, char **tail); double _strtod_r(void *reent, const char *str, char **tail);
strtol Строка в long ong strtol(const char *s, char **ptr,int base);
strtoul Строка в unsigned long unsigned long strtoul(const char *s, char **ptr, int base);
system Выполняет командную строку int system(char *s); int _system_r(void *reent, char *s);
wctomb Минимальный преобразователь широких символов в мультибайты int wctomb(char *s, wchar_t wchar);

 

Таблица 29.

Состав библиотеки string.h

Имя функции Описание
void *memcpy(void *dest, const void *src, size_t n); Копирует n байт из области памяти src в dest, которые не должны пересекаться, в противном случае результат неопределен (возможно как правильное копирование, так и нет)
void *memmove(void *dest, const void *src, size_t n); Копирует n байт из области памяти src в dest, которые в отличие от memcpy могут перекрываться
void *memchr(const void *s, char c, size_t n); Возвращает указатель на первое вхождение c в первых n байтах s, или NULL, если не найдено
int memcmp(const void *s1, const void *s2, size_t n); Сравнивает первые n символов в областях памяти
void *memset(void *, int z, size_t); Заполняет область памяти одним байтом z
char *strcat(char *dest, const char *src); Дописывает строку src в конец dest
char *strncat(char *, const char *, size_t); Дописывает не более n начальных симолов строки src (или всю src, если ее длина меньше) в конец dest
char *strchr(const char *, int); Ищет символ в строке, начиная с головы и возращает его адрес, или NULL если не найден
char *strrchr(const char *, int); Ищет символ в строке, начиная с хвоста и возращает его адрес, или NULL если не найден
int strcmp(const char *, const char *); Лексикографическое сравнение строк
int strncmp(const char *, const char *, size_t); Лексикографическое сравнение первых n байтов строк
int strcoll(const char *, const char *); Лексикографическое сравнение строк с учетом локали collating order
char *strcpy(char *toHere, const char *fromHere); Копирует строку из одного места в другое
char *strncpy(char *toHere, const char *fromHere, size_t); Копирует до n байт строки из одного места в другое
char *strerror(int); Возвращает строковое представление сообщения об ошибке errno (не потоко-безопасная)
size_t strlen(const char *); Возвращает длину строки
size_t strspn(const char *s, const char *accept); Определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, перечисленных в accept
size_t strcspn(const char *s, const char *reject); Определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, не перечисленных в reject
char *strpbrk(const char *s, const char *accept); Находит первое вхождение любого символа, не перечисленного в accept
char *strstr(const char *haystack, const char *needle); Находит первое вхождение строки needle в haystack
char *strtok(char *, const char *); Преобразует строку в последовательность токенов. Не потоко-безопасная, нереентрантная.
size_t strxfrm(char *dest, const char *src, size_t n); Создает оттранслированную копию строки, такую, что дословное сравнение ее (strcmp) будет эквивалентно сравнению с коллатором.

 

Таблица 30.

Состав библиотеки time.h

Имя функции Описание
int tm_sec; Секунды от начала минуты (0,61)
int tm_min; Минуты от начала часа (0,59)
int tm_hour; Часы от полуночи (0,23)
int tm_mday; Число месяца (1,31)
int tm_mon; Месяцы после января (0,11)
int tm_year; Годы с 1900
int tm_wday; Дни с воскресенья (0,6)
int tm_yday; Дни с первого января (0,365)
int tm_isdst; Признак летнего времени