Приложение 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; | Признак летнего времени |