Стандартная библиотека C -<stdlib.h>
Введение
stdlib .hЗаголовочный файл определяет четыре типа переменных, некоторые макросы и различные общие служебные функции.
<stdlib.h>является заголовочным файлом в стандартной библиотеке C, который предоставляет множество служебных функций общего назначения, включая управление памятью, управление процессами, сортировку и поиск, а также преобразование строк, среди прочего.
Переменные библиотеки
Ниже приведены типы переменных, определённые в заголовочном файле stdlib.h:
| Порядковый номер | Переменные и описание |
|---|---|
| 1 | size_t Это беззнаковый целочисленный тип, который являетсяsizeofрезультатом ключевого слова. |
| 2 | wchar_t Это целочисленный тип для размера константы широкого символа. |
| 3 | div_t Это структура, возвращаемая функциейdiv. |
| 4 | ldiv_t Это структура, возвращаемая функциейldiv. |
Библиотечные макросы
Ниже приведены макросы, определённые в заголовочном файле stdlib.h:
| Порядковый номер | Макросы и описание |
|---|---|
| 1 | NULL Этот макрос является значением константы нулевого указателя. |
| 2 | EXIT_FAILURE Это значение, возвращаемое при неудачном завершении функции exit. |
| 3 | EXIT_SUCCESS Это значение, возвращаемое при успешном завершении функции exit. |
| 4 | RAND_MAX Этот макрос — максимальное значение, возвращаемое функцией rand. |
| 5 | MB_CUR_MAX Этот макрос представляет максимальное количество символов в многобайтовом наборе символов, которое не может быть больше MB_LEN_MAX. |
Библиотечные функции
Ниже перечислены функции, определённые в заголовочном файле stdlib.h:
| Порядковый номер | Функции и описание |
|---|---|
| 1 | double atof(const char *str) Передайте параметрstr. Преобразует строку, на которую указывает, в число с плавающей запятой (типа double). |
| 2 | int atoi(const char *str) Передайте параметрstr. Преобразует строку, на которую указывает, в целое число (типа int). |
| 3 | long int atol(const char *str) Передайте параметрstr. Преобразует строку, на которую указывает, в длинное целое число (типа long int). |
| 4 | double strtod(const char *str, char **endptr) Передайте параметрstr. Преобразует строку, на которую указывает, в число с плавающей запятой (типа double). |
| 5 | long int strtol(const char *str, char **endptr, int base) Передайте параметрstr. Преобразует строку, на которую указывает, в длинное целое число (типа long int). |
| 6 | unsigned long int strtoul(const char *str, char **endptr, int base) Передайте параметрstrПреобразует строку, на которую указывает, в беззнаковое длинное целое (типа unsigned long int). |
| 7 | void *calloc(size_t nitems, size_t size) Выделяет необходимый объём памяти и возвращает указатель на него. |
| 8 | void free(void *ptr) Вызовите перед освобождениемcalloc、mallocилиreallocвыделенного пространства памяти. |
| 9 | void *malloc(size_t size) Выделяет необходимый объём памяти и возвращает указатель на него. |
| 10 | void *realloc(void *ptr, size_t size) Вызовите перед попыткой изменения размераmallocилиcallocразмера выделенного блока памяти, на который указывает ptr. |
| 11 | void abort(void) Вызывает аварийное завершение программы. |
| 12 | int atexit(void (*func)(void)) Вызывает указанную функцию при нормальном завершении программы.func。 |
| 13 | void exit(int status) Вызывает нормальное завершение программы. |
| 14 | char *getenv(const char *name) Ищет строку среды, на которую указывает name, и возвращает связанное с этой строкой значение. |
| 15 | int system(const char *string) Команда, заданная строкой string, передаётся в хост-среду для выполнения командным процессором. |
| 16 | void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) Выполняет двоичный поиск. |
| 17 | void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) Сортирует массив. |
| 18 | int abs(int x) Возвращает абсолютное значение x. |
| 19 | div_t div(int numer, int denom) Делит числитель на знаменатель. |
| 20 | long int labs(long int x) Возвращает абсолютное значение x. |
| 21 | ldiv_t ldiv(long int numer, long int denom) Делит числитель на знаменатель. |
| 22 | int rand(void) Возвращает псевдослучайное число в диапазоне от 0 доRAND_MAX. |
| 23 | void srand(unsigned int seed) Эта функция инициализирует генератор случайных чисел, используемый функциейrandиспользуемый генератор случайных чисел. |
| 24 | int mblen(const char *str, size_t n) Возвращает длину многобайтового символа, на который указывает параметрstr. |
| 25 | size_t mbstowcs(schar_t *pwcs, const char *str, size_t n) Преобразует многобайтовую строку символов, на которую указывает параметрstr, в массив, на который указываетpwcs. |
| 26 | int mbtowc(wchar_t *pwc, const char *str, size_t n) Проверка параметровstrУказываемый многобайтовый символ. |
| 27 | size_t wcstombs(char *str, const wchar_t *pwcs, size_t n) Помещает массивpwcsХранящаяся в нём кодировка преобразуется в многобайтовые символы и сохраняется в строке.strВ. |
| 28 | int wctomb(char *str, wchar_t wchar) Проверяет по параметруwcharкодировку заданного многобайтового символа. |
Пример
Далее используется<stdlib.h>Примеры некоторых функций в.
Динамическое выделение памяти:
Пример
#include <stdlib.h>
int main() {
int *array = (int*)malloc(10 * sizeof(int));
if (array == NULL) {
perror("Не удалось выделить память");
return 1;
}
for (int i = 0; i < 10; i++) {
array[i] = i;
printf("%d ", array[i]);
}
printf("\n");
free(array);
return 0;
}
Генерация псевдослучайных чисел:
Пример
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
for (int i = 0; i < 10; i++) {
printf("%d ", rand() % 100);
}
printf("\n");
return 0;
}
Преобразование строк:
Пример
#include <stdlib.h>
int main() {
const char *str = "12345";
int num = atoi(str);
printf("Значение целого числа: %d\n", num);
return 0;
}
Быстрая сортировка:
Пример
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int array[] = {5, 2, 9, 1, 5, 6};
int size = sizeof(array) / sizeof(array[0]);
qsort(array, size, sizeof(int), compare);
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
Примечания
- Использование
malloc、callocиreallocВыделенную память необходимо освободить с помощьюfreeчтобы избежать утечек памяти. atoi、atolиatofФункция не обеспечивает проверку ошибок; при её использовании убедитесь, что формат входных данных корректен. Рекомендуется использоватьstrtol、strtoulиstrtodдля выполнения более безопасных преобразований.qsortиbsearchФункция требует пользовательскую функцию сравнения для обработки различных типов данных и требований к сортировке.
Понимая и используя<stdlib.h>Предоставленные функции позволяют выполнять такие операции, как управление памятью, управление процессами, генерация случайных чисел, управление средой, математические преобразования, а также сортировку и поиск в программах на C, что позволяет писать более гибкие и многофункциональные программы.