本物のC

C の知識:stdlib.h


汎用のユーティリティ関数が集められています。

文字列の解釈

ato~関数は ASCII to ~ の意味で、文字列を実数や整数として解釈します。

double atof(const char *nptr);
int atoi(const char *nptr);
long int atol(const char *nptr);
long long int atoll(const char *nptr);

乱数

擬似乱数を発生させます。

擬似乱数はsrandで設定される初期値によって、どの値が出るか完全に決定されます。srandが一度も呼ばれていない状態での初期値は 1 です7.22.2.2#2

randの返す擬似乱数は 0 ~ RAND_MAX の範囲です。

void srand(unsigned int seed);
int rand(void);

ただし C の擬似乱数は「質」が全く保障されていないので(「附録:乱数」を参照)、ちゃんとしたランダム性が欲しい場合は使用を避けるべきです。

動的メモリ確保

malloccallocはヒープから指定されたサイズの領域を確保し、freeはそれを開放します。

void *malloc(size_t size);
void *calloc(size_t nmemb, size_t size);
void free(void *ptr);

callocnmemb * sizeの領域を確保するだけでなく、その内容を 0 で初期化します。

mallocなどはメモリ確保が出来なかった場合ヌルポインタを返します。

システム

exit関数はプログラムを終了します。exit(status);main関数内でreturn status;を実行する事と同等です5.1.2.2.3#1

_Noreturn void exit(int status);

getenv関数は環境変数を取得します。名前の一致する環境変数が無い場合はヌルポインタが返ります。

char *getenv(const char *name);

system関数は渡された文字列をコマンドとして実行環境で実行します。

int system(const char *string);

ソート

qsort関数は配列の要素を並び替えます。順序関係は第四引数に比較関数を渡す事で指定します。

void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));