Стандартная библиотека C -<stdlib.h>

Введение

stdlib .hЗаголовочный файл определяет четыре типа переменных, некоторые макросы и различные общие служебные функции.

<stdlib.h>является заголовочным файлом в стандартной библиотеке C, который предоставляет множество служебных функций общего назначения, включая управление памятью, управление процессами, сортировку и поиск, а также преобразование строк, среди прочего.

Переменные библиотеки

Ниже приведены типы переменных, определённые в заголовочном файле stdlib.h:

Порядковый номерПеременные и описание
1size_t
Это беззнаковый целочисленный тип, который являетсяsizeofрезультатом ключевого слова.
2wchar_t
Это целочисленный тип для размера константы широкого символа.
3div_t
Это структура, возвращаемая функциейdiv.
4ldiv_t
Это структура, возвращаемая функциейldiv.

Библиотечные макросы

Ниже приведены макросы, определённые в заголовочном файле stdlib.h:

Порядковый номерМакросы и описание
1NULL
Этот макрос является значением константы нулевого указателя.
2EXIT_FAILURE
Это значение, возвращаемое при неудачном завершении функции exit.
3EXIT_SUCCESS
Это значение, возвращаемое при успешном завершении функции exit.
4RAND_MAX
Этот макрос — максимальное значение, возвращаемое функцией rand.
5MB_CUR_MAX
Этот макрос представляет максимальное количество символов в многобайтовом наборе символов, которое не может быть больше MB_LEN_MAX.

Библиотечные функции

Ниже перечислены функции, определённые в заголовочном файле stdlib.h:

Порядковый номерФункции и описание
1double atof(const char *str)
Передайте параметрstr. Преобразует строку, на которую указывает, в число с плавающей запятой (типа double).
2int atoi(const char *str)
Передайте параметрstr. Преобразует строку, на которую указывает, в целое число (типа int).
3long int atol(const char *str)
Передайте параметрstr. Преобразует строку, на которую указывает, в длинное целое число (типа long int).
4double strtod(const char *str, char **endptr)
Передайте параметрstr. Преобразует строку, на которую указывает, в число с плавающей запятой (типа double).
5long int strtol(const char *str, char **endptr, int base)
Передайте параметрstr. Преобразует строку, на которую указывает, в длинное целое число (типа long int).
6unsigned long int strtoul(const char *str, char **endptr, int base)
Передайте параметрstrПреобразует строку, на которую указывает, в беззнаковое длинное целое (типа unsigned long int).
7void *calloc(size_t nitems, size_t size)
Выделяет необходимый объём памяти и возвращает указатель на него.
8void free(void *ptr)
Вызовите перед освобождениемcalloc、mallocилиreallocвыделенного пространства памяти.
9void *malloc(size_t size)
Выделяет необходимый объём памяти и возвращает указатель на него.
10void *realloc(void *ptr, size_t size)
Вызовите перед попыткой изменения размераmallocилиcallocразмера выделенного блока памяти, на который указывает ptr.
11void abort(void)
Вызывает аварийное завершение программы.
12int atexit(void (*func)(void))
Вызывает указанную функцию при нормальном завершении программы.func。
13void exit(int status)
Вызывает нормальное завершение программы.
14char *getenv(const char *name)
Ищет строку среды, на которую указывает name, и возвращает связанное с этой строкой значение.
15int system(const char *string)
Команда, заданная строкой string, передаётся в хост-среду для выполнения командным процессором.
16void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))
Выполняет двоичный поиск.
17void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
Сортирует массив.
18int abs(int x)
Возвращает абсолютное значение x.
19div_t div(int numer, int denom)
Делит числитель на знаменатель.
20long int labs(long int x)
Возвращает абсолютное значение x.
21ldiv_t ldiv(long int numer, long int denom)
Делит числитель на знаменатель.
22int rand(void)
Возвращает псевдослучайное число в диапазоне от 0 доRAND_MAX.
23void srand(unsigned int seed)
Эта функция инициализирует генератор случайных чисел, используемый функциейrandиспользуемый генератор случайных чисел.
24int mblen(const char *str, size_t n)
Возвращает длину многобайтового символа, на который указывает параметрstr.
25size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)
Преобразует многобайтовую строку символов, на которую указывает параметрstr, в массив, на который указываетpwcs.
26int mbtowc(wchar_t *pwc, const char *str, size_t n)
Проверка параметровstrУказываемый многобайтовый символ.
27size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)
Помещает массивpwcsХранящаяся в нём кодировка преобразуется в многобайтовые символы и сохраняется в строке.strВ.
28int wctomb(char *str, wchar_t wchar)
Проверяет по параметруwcharкодировку заданного многобайтового символа.

Пример

Далее используется<stdlib.h>Примеры некоторых функций в.

Динамическое выделение памяти:

Пример

#include <stdio.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 <stdio.h>
#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 <stdio.h>
#include <stdlib.h>

int main() {
    const char *str = "12345";
    int num = atoi(str);
    printf("Значение целого числа: %d\n", num);

    return 0;
}

Быстрая сортировка:

Пример

#include <stdio.h>
#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, что позволяет писать более гибкие и многофункциональные программы.

Другие расширения