C標準ライブラリ -<stdlib.h>
概要
stdlib .hヘッダーファイルは4つの変数型、いくつかのマクロ、およびさまざまな汎用ツール関数を定義しています。
<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 で定義されている関数です:
例
以下は、<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 <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 <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 <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;
}
#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 プログラムでメモリ管理、プロセス制御、乱数生成、環境管理、数学変換、および並べ替えや検索などの操作を行うことができ、より柔軟で機能豊富なプログラムを作成できます。