【C言語】標準ライブラリ【stdlib.h】 - 一般ユーティリティ
【C言語】
標準ライブラリ【stdlib.h】
一般ユーティリティ
一般ユーティリティ <stdlib.h>
一般ユーティリティに関する型・マクロ・関数の宣言定義。
div_t | int 型の商と剰余を格納する構造体 |
ldiv_t | long 型の商と剰余を格納する構造体 |
MB_CUR_MAX | 設定されているロケールにおけるマルチバイト文字の最大バイト数を表すマクロ |
RAND_MAX | rand 関数が返す擬似乱数の最大値 |
abort | プログラムの異常終了 |
abs | int 型の絶対値 |
atexit | 終了時関数の登録 |
atof | 文字列から double 型への変換 |
atoi | 文字列から int 型への変換 |
atol | 文字列から long 型への変換 |
bsearch | バイナリサーチ |
calloc | メモリブロックの割り付けとクリア |
div | int 型どうしの商と剰余 |
exit | プログラムの終了 |
free | メモリブロックの解放 |
getenv | 環境変数の参照 |
labs | long 型の絶対値 |
ldiv | long 型どうしの商と剰余 |
malloc | メモリブロックの割り付け |
mblen | マルチバイト文字の構成バイト数 |
mbstowcs | マルチバイト文字列からワイド文字列への変換 |
mbtowc | マルチバイト文字からワイド文字への変換 |
qsort | クイックソート(ただし、仕様上はソートを行うとあるだけで「クイックソートによる」とは書かれていない) |
rand | 擬似乱数 |
realloc | メモリブロックの再割り付け |
srand | 乱数種の設定 |
strtod | 文字列から double 型への変換 |
strtol | 文字列から long 型への変換(基数指定可) |
strtoul | 文字列から unsigned long 型への変換(基数指定可) |
system | コマンドプロセッサの呼び出し |
wcstombs | ワイド文字列からマルチバイト文字列への変換 |
wctomb | ワイド文字列からマルチバイト文字列への変換 |
汎用 <stdlib.h>
特に分類されない汎用的な関数の集まり。
メモリ関連、プロセス関連、変換など。
- [ malloc ] : メモリを動的に確保する。
-
関数型 : void *malloc(size_t n);
引数 : 確保するメモリサイズ
戻り値 : 確保したメモリのアドレス。確保できなかった場合はNULL。
機能 : メモリを動的に確保する。
- [ calloc ] : メモリを動的に確保する。確保したメモリはゼロクリアされる。
-
関数型 : void *calloc(size_t int nelem, size_t elsize);
引数 : 要素数、1要素のサイズ
戻り値 : 確保したメモリのアドレス。確保できなかった場合はNULL。
機能 : メモリを動的に確保する。確保したメモリはゼロクリアされる。
注意 : ゼロクリアされるからバグが減ると勘違いしないように。
- [ realloc ] : 確保したメモリサイズを変更する。中身は維持される。
-
関数型 : void *realloc(void *ptr, size_t size);
引数 : 確保したメモリのアドレス、新しいメモリサイズ。
戻り値 : 確保したメモリのアドレス。確保できなかった場合はNULL。
機能 : 確保したメモリサイズを変更する。中身は維持される。
補足 : メモリアドレスが変更される可能性があることに注意。
- [ free ] : 動的に確保したメモリを解放。
-
関数型 : void free(void *p);
引数 : 確保したメモリのアドレス
機能 : 動的に確保したメモリを解放。
- [ abs ] : 絶対値を求める。
-
関数型 : int abs(int n);
引数 : 数値
戻り値 : 数値の絶対値
機能 : 絶対値を求める。
- [ labs ] : 絶対値を求める。
-
関数型 : long labs(long n);
引数 : 数値
戻り値 : 数値の絶対値
機能 : 絶対値を求める。
- [ atof ] : 数字を含む文字列を実数値に変換。
-
関数型 : double atof(const char *s);
引数 : 数字を含む文字列
戻り値 : 変換後の値。変換できない場合は0。
機能 : 数字を含む文字列を実数値に変換。
- [ atoi ] : 数字を含む文字列を整数値に変換。
-
関数型 : int atoi(const char *s);
引数 : 数字を含む文字列
戻り値 : 変換後の値。変換できない場合は0。
機能 : 数字を含む文字列を整数値に変換。
- [ atol ] : 数字を含む文字列を整数値に変換。
-
関数型 : long atol(const char *s);
引数 : 数字を含む文字列
戻り値 : 変換後の値。変換できない場合は0。
機能 : 数字を含む文字列を整数値に変換。
- [ strtod ] : 数字を含む文字列を実数値に変換。
-
関数型 : double strtod(const char *s, char **endptr);
引数 : 数字を含む文字列、終了位置のアドレス
戻り値 : 変換後の値。変換できない場合は0。
機能 : 数字を含む文字列を実数値に変換。
- [ strtol ] : 数字を含む文字列を整数値に変換。
-
関数型 : long strtol(const char *s, char **endptr, int base);
引数 : 数字を含む文字列、終了位置のアドレス、数値の基数(2進数や16進数)
戻り値 : 変換後の値。変換できない場合は0。
機能 : 数字を含む文字列を整数値に変換。
- [ strtoul ] : 数字を含む文字列を符号無し整数値に変換。
-
関数型 : unsigned long strtoul(const char *s, char **endptr, int base);
引数 : 数字を含む文字列、終了位置のアドレス、数値の基数(2進数や16進数)
戻り値 : 変換後の値。変換できない場合は0。
機能 : 数字を含む文字列を符号無し整数値に変換。
- [ div ] : 商と余りを同時に計算。
-
関数型 : div_t div(int num, int denom);
引数 : 割られる数、割る数。
戻り値 : 割り算の結果。
機能 : 商と余りを同時に計算。
構造体 : div_t構造体 int quot 商、 int rem 余り。
補足 : この関数より、演算子 / や % を使うことをお勧めする。
- [ ldiv ] : 商と余りを同時に計算。
-
関数型 : ldiv_t ldiv(long num, long denom);
引数 : 割られる数、割る数。
戻り値 : 割り算の結果。
機能 : 商と余りを同時に計算。
構造体 : ldiv_t構造体 long quot 商、 long rem 余り。
補足 : この関数より、演算子 / や % を使うことをお勧めする。
- [ rand ] : 乱数を得る。
-
関数型 : int rand(void);
戻り値 : ランダムな値。範囲は処理系による。
機能 : 乱数を得る。
使用法 : #define RANDOM(MIN,MAX) ((MIN)+(int)(rand()/(float)RAND_MAX*((MAX)-(MIN)+1)))
とすれば、min ~ max 間の乱数を得ることが出来る。
- [ srand ] : 乱数系列の初期値を与える。
-
関数型 : void srand(unsigned int seed);
引数 : 乱数系列の初期値。
機能 : 乱数系列の初期値を与える。
使用法 : srand((unsigned int)time(0)); が定番である。
- [ exit ] : プログラムを終了させる。
-
関数型 : void exit(int n);
引数 : 終了コード。一般に EXIT_SUCCESS は正常終了、EXIT_FAILURE は異常終了。
機能 : プログラムを終了させる。
- [ abort ] : プログラムを異常終了させる。
-
関数型 : void abort(void);
機能 : プログラムを異常終了させる。
補足 : エラーが発生したときの終了に使用する。
- [ atexit ] : プログラム終了時に実行する関数を登録する。
-
関数型 : int atexit(void (*func)(void));
引数 : 関数のアドレス
戻り値 : 成功した場合は0、失敗した場合は0以外。
機能 : プログラム終了時に実行する関数を登録する。
- [ getenv ] : 環境変数を取得する。
-
関数型 : char *getenv(const char *name);
引数 : 名前
戻り値 : 値を格納した文字列の先頭アドレス。見つからない場合はNULL。
機能 : 環境変数を取得する。
- [ bsearch ] : 2分探索を行う。データは昇順に整列されていなくてはならない。
-
関数型 : void *bsearch(const void *key, const void *base,
size_t nmemb,size_t size, int (*compar)(const void *x, const void *y));
引数 : 探す値、配列の先頭、探索数、1要素のサイズ、比較関数のアドレス
戻り値 : 見つかった要素のアドレス。見つからない場合はNULL。
機能 : 2分探索を行う。データは昇順に整列されていなくてはならない。
比較 : 比較関数は、x > yの場合は正、x = yの場合は0、x < yの場合は負を返すこと。
- [ qsort ] : 配列を昇順に整列する。クイックソートを使っていることが多い。
-
関数型 : void qsort(void *base, size_t nel, size_t width,
int(*compar)(const void *x, const void *y));
引数 : 配列の先頭、整列個数、1要素のサイズ、比較関数のアドレス
機能 : 配列を昇順に整列する。クイックソートを使っていることが多い。
比較 : 比較関数は、x > yの場合は正、x = yの場合は0、x < yの場合は負を返すこと。
- [ system ] : 処理系が用意しているコマンドを実行する。
-
関数型 : int system(const char *string);
引数 : コマンド文字列。
戻り値 : 処理系のコマンド依存。コマンドを実行できなかった場合は-1。
機能 : 処理系が用意しているコマンドを実行する。
補足 : 当然だが、コマンドは処理系が異なると互換性がない。
: NULLを指定すると、コマンドが利用できない環境では0を返します。