C標準ライブラリ -<stdlib.h>

概要

stdlib .hヘッダーファイルは4つの変数型、いくつかのマクロ、およびさまざまな汎用ツール関数を定義しています。

<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("Memory allocation failed");
        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("The integer value is %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 プログラムでメモリ管理、プロセス制御、乱数生成、環境管理、数学変換、および並べ替えや検索などの操作を行うことができ、より柔軟で機能豊富なプログラムを作成できます。

その他の拡張