7.4.12 < stdlib.h>

Cプログラムでの標準的処理を行う関数を定義しています。

以下のマクロは、処理系定義です。

種別

定義名

説明

(マクロ)

onexit_t

onexit関数で登録する関数の返す型およびonexit関数のリターン値の型です。

div_t

div関数のリターン値の構造体の型です。

ldiv_t

ldiv関数のリターン値の構造体の型です。

lldiv_t

lldiv関数のリターン値の構造体の型です。

定数

(マクロ)

RAND_MAX

rand関数において生成する擬似乱数整数の最大値です。

EXIT_SUCCESS

成功終了状態を表します。

関数

atof

数を表現する文字列をdouble型の浮動小数点値に変換します。

atoi

10進数を表現する文字列をint型の整数値に変換します。

atol

10進数を表現する文字列をlong型の整数値に変換します。

atoll

10進数を表現する文字列をlong long型の整数値に変換します。

strtod

数を表現する文字列をdouble型の浮動小数点値に変換します。

strtof

数を表現する文字列をfloat型の浮動小数点値に変換します。

strtold

数を表現する文字列をlong double型の浮動小数点値に変換します。

strtol

数を表現する文字列をlong型の整数値に変換します。

strtoul

数を表現する文字列をunsigned long型の整数値に変換します。

strtoll

数を表現する文字列をlong long型の整数値に変換します。

strtoull

数を表現する文字列をunsigned long long型の整数値に変換します。

rand

0からRAND_MAXの間の擬似乱数整数を生成します。

srand

rand関数で生成する擬似乱数列の初期値を設定します。

calloc

記憶域を割り当てて、すべての割り当てられた記憶域を0で初期化します。

free

指定された記憶域を解放します。

malloc

記憶域を割り当てます。

realloc

記憶域の大きさを指定された大きさに変更します。

bsearch

2分割検索を行います。

qsort

ソートを行います。

abs

int型整数の絶対値を計算します。

div

int型整数の除算の商と余りを計算します。

labs

long型整数の絶対値を計算します。

ldiv

long型整数の除算の商と余りを計算します。

llabs

long long型整数の絶対値を計算します。

lldiv

long long型整数の除算の商と余りを計算します。

 

処理系定義仕様

 

項目

コンパイラの仕様

1

calloc,malloc,realloc関数でサイズが0のときの動作

NULLを返します。

 

atof

数を表現する文字列を、double型の浮動小数点値に変換します。

 

[指定形式]

#include <stdlib.h>

double atof(const char *nptr);

 

[引数]

nptr 変換する数を表現する文字列のポインタ

 

[戻り値]

変換されたdouble型の浮動小数点値

 

[備考]

変換後の値がオーバフロー/アンダフローをおこした時はerrnoを設定します。

変換は、浮動小数点型の形式に合わない最初の文字までに対して行います。

atof関数は、オーバフロー等のエラーが生じた場合、結果の値を保証しません。エラー時に保証された値を得たい場合は、strtod関数を使用してください。

 

atoi

10進数を表現する文字列を、int型の整数値に変換します。

 

[指定形式]

#include <stdlib.h>

long atoi(const char *nptr);

 

[引数]

nptr 変換する数を表現する文字列のポインタ

 

[戻り値]

変換されたint型の整数値

 

[備考]

変換後の値がオーバフローをおこした時はerrnoを設定します。

変換は、10進数の形式に合わない最初の文字までに対して行います。

atoi関数は、オーバフロー等のエラーが生じた場合、結果の値を保証しません。エラー時に保証された値を得たい場合は、strtol関数を使用してください。

 

atol

10進数を表現する文字列を、long型の整数値に変換します。

 

[指定形式]

#include <stdlib.h>

long atol(const char *nptr);

 

[引数]

nptr 変換する数を表現する文字列のポインタ

 

[戻り値]

変換されたlong型の整数値

 

[備考]

変換後の値がオーバフローをおこした時はerrnoを設定します。

変換は、10進数の形式に合わない最初の文字までに対して行います。

atol関数は、オーバフロー等のエラーが生じた場合、結果の値を保証しません。エラー時に保証された値を得たい場合は、strtol関数を使用してください。

 

atoll

10進数を表現する文字列を、long long型の整数値に変換します。

 

[指定形式]

#include <stdlib.h>

long long atoll (const char *nptr);

 

[引数]

nptr 変換する数を表現する文字列のポインタ

 

[戻り値]

変換されたlong long 型の整数値

 

[備考]

変換後の値がオーバフローをおこした時はerrnoを設定します。

変換は、10進数の形式に合わない最初の文字までに対して行います。

atoll関数は、オーバフロー等のエラーが生じた場合、結果の値を保証しません。エラー時に保証された値を得たい場合は、strtoll関数を使用してください。

 

strtod

数を表現する文字列をdouble型の浮動小数点値に変換します。

 

[指定形式]

#include <stdlib.h>

double strtod(const char *nptr, char **endptr);

 

[引数]

nptr 変換する数を表現する文字列へのポインタ

endptr 浮動小数点値を構成していない最初の文字へのポインタを格納 する記憶域へのポインタ

 

[戻り値]

正常: nptrが指している文字列が浮動小数点型を構成しない文字で始まっている時:0

nptrが指している文字列が浮動小数点型を構成する文字で始まっている時 :変換されたdouble型の浮動小数点値

異常: 変換後の値がオーバフローの時:変換する文字列の符号と同符号をもつHUGE_VAL

変換後の値がアンダフローの時:0

 

[備考]

変換後の値がオーバフロー/アンダフローをおこした時はerrnoを設定します。

strtod関数は、最初の数字もしくは小数点から浮動小数点値を構成しない文字の直前までをdouble型の浮動小数点値に変換します。ただし、指数部も小数点も現われなかった時は、小数点は文字列の最後の数字の後に続くと仮定されます。endptrの指す領域には、浮動小数点型を構成しない最初の文字へのポインタを設定します。数字を読み込む前に浮動小数点型を構成しない文字がある場合はnptrの値を設定します。endptrがNULLの場合、この設定は行われません。

 

strtof

数を表現する文字列をfloat型の浮動小数点値に変換します。

 

[指定形式]

#include <stdlib.h>

float strtof(const char *nptr, char **endptr);

 

[引数]

nptr 変換する数を表現する文字列へのポインタ

endptr 浮動小数点値を構成していない最初の文字へのポインタを格納する記憶域へのポインタ

 

[戻り値]

正常: nptrが指している文字列が浮動小数点型を構成しない文字で始まっている時:0

nptrが指している文字列が浮動小数点型を構成する文字で始まっている時 :変換されたfloat型の浮動小数点値

異常: 変換後の値がオーバフローの時:変換する文字列の符号と同符号をもつHUGE_VALF

変換後の値がアンダフローの時:0

 

[備考]

変換後の値がオーバフロー/アンダフローをおこした時はerrnoを設定します。

strtof関数は、最初の数字もしくは小数点から浮動小数点値を構成しない文字の直前までをfloat型の浮動小数点値に変換します。ただし、指数部も小数点も現われなかった時は、小数点は文字列の最後の数字の後に続くと仮定されます。endptrの指す領域には、浮動小数点型を構成しない最初の文字へのポインタを設定します。数字を読み込む前に浮動小数点型を構成しない文字がある場合はnptrの値を設定します。endptrがNULLの場合、この設定は行われません。

 

strtold

数を表現する文字列をlong double型の浮動小数点値に変換します。

 

[指定形式]

#include <stdlib.h>

long double strtold(const char *nptr, char **endptr);

 

[引数]

nptr 変換する数を表現する文字列へのポインタ

endptr 浮動小数点値を構成していない最初の文字へのポインタを格納 する記憶域へのポインタ

 

[戻り値]

正常: nptrが指している文字列が浮動小数点型を構成しない文字で始まっている時:0

nptrが指している文字列が浮動小数点型を構成する文字で始まっている時 :変換されたlong double型の浮動小数点値

異常: 変換後の値がオーバフローの時:変換する文字列の符号と同符号をもつHUGE_VALL

変換後の値がアンダフローの時:0

 

[備考]

変換後の値がオーバフロー/アンダフローをおこした時はerrnoを設定します。

strtold関数は、最初の数字もしくは小数点から浮動小数点値を構成しない文字の直前までをlong double型の浮動小数点値に変換します。ただし、指数部も小数点も現われなかった時は、小数点は文字列の最後の数字の後に続くと仮定されます。endptrの指す領域には、浮動小数点型を構成しない最初の文字へのポインタを設定します。数字を読み込む前に浮動小数点型を構成しない文字がある場合はnptrの値を設定します。endptrがNULLの場合、この設定は行われません。

 

strtol

数を表現する文字列をlong型の整数値に変換します。

 

[指定形式]

#include <stdlib.h>

long strtol(const char *nptr, char **endptr, long base);

 

[引数]

nptr 変換する数を表現する文字列へのポインタ

endptr 整数を構成しない最初の文字へのポインタを格納する記憶域への ポインタ

base 変換の基数(0又は2〜36)

 

[戻り値]

正常: nptrが指している文字列が整数を構成しない文字で始まっている時:0

nptrが指している文字列が整数を構成する文字で始まっている時 :変換されたlong型の整数値

異常: 変換後の値がオーバフローの時:変換する文字列の符号に従ってLONG_MAX あるいはLONG_MIN

 

[備考]

変換後の値がオーバフローをおこした時は、errnoを設定します。

strtol関数は、最初の数字から整数を構成しない最初の文字の前までをlong型の整数値に変換します。

endptrの指す記憶域に、整数を構成しない最初の文字へのポインタを設定します。最初の数字を読み込む前に整数を構成しない文字がある場合はnptrの値を設定します。endptrがNULL場合、この設定は行われません。

baseの値が0の時は、「3.1.3(4)整数」の規則に従って変換されます。baseの値が2から36の間の時は、変換する時の基数を示しています。ここで変換する文字列中のa(もしくはA)からz(もしくはZ)までの文字は、10から35の値に対応付けられます。baseの値より大きいか等しい文字が、変換する文字列の中にある時は、そこで変換処理を終了します。また、符号の後にある0は、変換の時は無視され、また、baseが16の時の0x(もしくは0X)も無視されます。

 

strtoul

数を表現する文字列をunsigned long型の整数値に変換します。

 

[指定形式]

#include <stdlib.h>

unsigned long strtoul (const char *nptr, char **endptr, long base);

 

[引数]

nptr 変換する数を表現する文字列へのポインタ

endptr 整数を構成しない最初の文字へのポインタを格納する記憶域への ポインタ

base 変換の基数(0又は2〜36)

 

[戻り値]

正常: nptrが指している文字列が整数を構成しない文字で始まっている時:0

nptrが指している文字列が整数を構成する文字で始まっている時 :変換されたunsigned long型の整数値

異常: 変換後の値がオーバフローの時:ULONG_MAX

 

[備考]

変換後の値がオーバフローをおこした時は、errnoを設定します。

strtoul関数は、最初の数字から整数を構成しない最初の文字の前までをunsigned long型の整数値に変換します。

endptrの指す記憶域に、整数を構成しない最初の文字へのポインタを設定します。最初の数字を読み込む前に整数を構成しない文字がある場合はnptrの値を設定します。endptrがNULL場合、この設定は行われません。

baseの値が0の時は、「3.1.3(4) 整数」の規則に従って変換されます。baseの値が2から36の間の時は、変換する時の基数を示しています。ここで変換する文字列中のa(もしくはA)からz(もしくはZ)までの文字は、10から35の値に対応付けられます。baseの値より大きいか等しい文字が、変換する文字列の中にある時は、そこで変換処理を終了します。また、符号の後にある0は、変換の時は無視され、また、baseが16の時の0x(もしくは0X)も無視されます。

 

strtoll

数を表現する文字列をlong long型の整数値に変換します。

 

[指定形式]

#include <stdlib.h>

long long strtoll (const char *nptr, char **endptr, long base);

 

[引数]

nptr 変換する数を表現する文字列へのポインタ

endptr 整数を構成しない最初の文字へのポインタを格納する記憶域への ポインタ

base 変換の基数(0又は2〜36)

 

[戻り値]

正常: nptrが指している文字列が整数を構成しない文字で始まっている時:0

nptrが指している文字列が整数を構成する文字で始まっている時 :変換されたlong long型の整数値

異常: 変換後の値がオーバフローの時:変換する文字列の符号に従ってLLONG_MAX あるいはLLONG_MIN

 

[備考]

変換後の値がオーバフローをおこした時は、errnoを設定します。

strtoll関数は、最初の数字から整数を構成しない最初の文字の前までをlong long型の整数値に変換します。

endptrの指す記憶域に、整数を構成しない最初の文字へのポインタを設定します。最初の数字を読み込む前に整数を構成しない文字がある場合はnptrの値を設定します。endptrがNULL場合、この設定は行われません。

baseの値が0の時は、「3.1.3(4) 整数」の規則に従って変換されます。baseの値が2から36の間の時は、変換する時の基数を示しています。ここで変換する文字列中のa(もしくはA)からz(もしくはZ)までの文字は、10から35の値に対応付けられます。baseの値より大きいか等しい文字が、変換する文字列の中にある時は、そこで変換処理を終了します。また、符号の後にある0は、変換の時は無視され、また、baseが16の時の0x(もしくは0X)も無視されます。

 

strtoull

数を表現する文字列をunsigned long long型の整数値に変換します。

 

[指定形式]

#include <stdlib.h>

unsigned long long strtoull (const char *nptr, char **endptr, long base);

 

[引数]

nptr 変換する数を表現する文字列へのポインタ

endptr 整数を構成しない最初の文字へのポインタを格納する記憶域への ポインタ

base 変換の基数(0又は2〜36)

 

[戻り値]

正常: nptrが指している文字列が整数を構成しない文字で始まっている時:0

nptrが指している文字列が整数を構成する文字で始まっている時:変換されたunsigned long long型の整数値

異常: 変換後の値がオーバフローの時:ULLONG_MAX

 

[備考]

変換後の値がオーバフローをおこした時は、errnoを設定します。

strtoull関数は、最初の数字から整数を構成しない最初の文字の前までをunsigned long long型の整数値に変換します。

endptrの指す記憶域に、整数を構成しない最初の文字へのポインタを設定します。最初の数字を読み込む前に整数を構成しない文字がある場合はnptrの値を設定します。endptrがNULL場合、この設定は行われません。

baseの値が0の時は、「3.1.3(4) 整数」の規則に従って変換されます。baseの値が2から36の間の時は、変換する時の基数を示しています。ここで変換する文字列中のa(もしくはA)からz(もしくはZ)までの文字は、10から35の値に対応付けられます。baseの値より大きいか等しい文字が、変換する文字列の中にある時は、そこで変換処理を終了します。また、符号の後にある0は、変換の時は無視され、また、baseが16の時の0x(もしくは0X)も無視されます。

 

rand

0からRAND_MAXの間の擬似乱数整数を生成します。

 

[指定形式]

#include <stdlib.h>

long rand(void);

 

[戻り値]

擬似乱数整数値

 

srand

rand関数で生成する擬似乱数列の初期値を設定します。

 

[指定形式]

#include <stdlib.h>

void srand(unsigned long seed)

 

[引数]

seed 擬似乱数列生成の初期値

 

[備考]

srand関数は、rand関数が擬似乱数列を生成するための初期値を設定します。したがって、rand関数で擬似乱数値を生成している時に、再度srand関数で、同じ値の初期値を設定すると、擬似乱数列はくり返し生成されることになります。

rand関数がsrand関数より先に呼ばれた時は、擬似乱数列の生成の初期値として1が設定されます。

 

calloc

記憶域を割り当てて、すべての割り当てられた記憶域を0で初期化します。

 

[指定形式]

#include <stdlib.h>

void *calloc(size_t nelem, size_t elsize);

 

[引数]

nelem 要素の数

elsize 一つの要素の占めるバイト数

 

[戻り値]

正常:割り当てられた記憶域の先頭のアドレス

異常:記憶域の割り当てができなかった時、または引数のいずれかが0の時:NULL

 

[備考]

elsizeバイト単位の記憶域をnelem個記憶域に割り当てます。また、その割り当てられた記憶域のすべてのビットは0で初期化されます。

CC-RXには、記憶域に対する不正な操作を検出するためのセキュリティ機能があります。詳細は、「2.5.4 ライブラリジェネレータ・オプション」の-secure_mallocオプションを参照してください。

 

free

指定された記憶域を解放します。

 

[指定形式]

#include <stdlib.h>

void free(void *ptr);

 

[引数]

ptr 解放する記憶域のアドレス

 

[備考]

ptrが指す記憶域を解放し、再度割り当てて使用することを可能とします。ptrがNULLであれば何もしません。

解放しようとした記憶域が、calloc、malloc、realloc関数で割り当てられた記憶域でない時、または、すでにfree、realloc関数によって解放されていた時の動作は保証しません。また、解放された後の記憶域を参照した時の動作も保証しません。

CC-RXには、記憶域に対する不正な操作を検出するためのセキュリティ機能があります。詳細は、「2.5.4 ライブラリジェネレータ・オプション」の-secure_mallocオプションを参照してください。

 

malloc

記憶域を割り当てます。

 

[指定形式]

#include <stdlib.h>

void *malloc(size_t size);

 

[引数]

size 割り当てる記憶域のバイト数

 

[戻り値]

正常:割り当てられた記憶域の先頭アドレス

異常:記憶域の割り当てができなかった時、またはsizeが0の時:NULL

[備考]

sizeで示されるバイトの分だけ記憶域を割り当てます。

CC-RXには、記憶域に対する不正な操作を検出するためのセキュリティ機能があります。詳細は、「2.5.4 ライブラリジェネレータ・オプション」の-secure_mallocオプションを参照してください。

 

realloc

記憶域の大きさを指定された大きさに変更します。

 

[指定形式]

#include <stdlib.h>

void *realloc(void *ptr, size_t size);

 

[引数]

ptr 変更する記憶域の先頭アドレス

size 変更後の記憶域のバイト数

 

[戻り値]

正常:変更した記憶域の先頭アドレス

異常:記憶域の割り当てができなかった時、またはsizeが0の時:NULL

 

[備考]

ptrの指す記憶域の大きさをsizeで示されるバイト分の大きさの記憶域に変更します。もし、新しく割り当てられた記憶域の大きさが、変更前の記憶域の大きさより小さい時は、新しく割り当てられた記憶域の大きさまでの内容は変化しません。

ptrがcalloc、malloc、realloc関数で割り当てられた記憶域へのポインタでない時、またはすでにfree、realloc関数によって解放されている記憶域へのポインタの時、動作はされません。

CC-RXには、記憶域に対する不正な操作を検出するためのセキュリティ機能があります。詳細は、「2.5.4 ライブラリジェネレータ・オプション」の-secure_mallocオプションを参照してください。

 

bsearch

二分割検索を行います。

[指定形式]

 

#include <stdlib.h>

void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))

 

[引数]

key 検索するデータへのポインタ

base 検索対象となるテーブルへのポインタ

nmemb 検索対象のメンバの数

size 検索対象のメンバのバイト数

compar 比較を行う関数へのポインタ

 

[戻り値]

一致するメンバが検索できた時 :一致したメンバへのポインタ

一致するメンバが検索できなかった時 :NULL

 

[備考]

keyの指すデータと一致するメンバを、baseの指すテーブルの中で二分割検索法によって検索します。比較を行う関数は、比較する2つのデータへのポインタp1(第1引数)、p2(第2引数)を受け取り、以下の仕様に従って結果を返してください。

*p1<*p2の時、負の値を返します。

*p1==*p2の時、0を返します。

*p1>*p2の時、正の値を返します。

検索対象となる各メンバは、昇順に並んでいる必要があります。

 

qsort

ソートを行います。

 

[指定形式]

#include <stdlib.h>

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

 

[引数]

base ソート対象となるテーブルへのポインタ

nmemb ソート対象のメンバの数

size ソート対象のメンバのバイト数

compar 比較を行う関数へのポインタ

 

[備考]

baseの指すテーブルのデータをソートします。データの並べる順序は、比較を行う関数へのポインタによって指定します。この関数は、比較する2つのデータへのポインタp1(第1引数)、p2(第2引数)を受け取り、以下の仕様に従って結果を返してください。

*p1<*p2の時、負の値を返します。

*p1==*p2の時、0を返します。

*p1>*p2の時、正の値を返します。

 

abs

int型整数の絶対値を求めます。

 

[指定形式]

#include <stdlib.h>

long abs(long i);

 

[引数]

i 絶対値を求める整数

 

[戻り値]

iの絶対値

 

[備考]

iの絶対値を求めた結果、int型整数値として表現できない時の動作は保証しません。

 

div

int型整数の除算の商と余りを計算します。

 

[指定形式]

#include <stdlib.h>

div_t div(long numer, long denom);

 

[引数]

numer 被除数

denom 除数

 

[戻り値]

numerをdenomで除算した結果の商と余り

 

labs

long型整数の絶対値を計算します。

 

[指定形式]

#include <stdlib.h>

long labs(long j);

[引数]

j 絶対値を求める整数

 

[戻り値]

jの絶対値

 

[備考]

jの絶対値を求めた結果、long型の整数値として表現できない時の動作は保証しません。

 

ldiv

long型整数の除算の商と余りを計算します。

 

[指定形式]

#include <stdlib.h>

ldiv_t ldiv(long numer, long denom);

 

[引数]

numer 被除数

denom 除数

 

[戻り値]

numerをdenomで除算した結果の商と余り

 

llabs

long long 型整数の絶対値を計算します。

 

[指定形式]

#include <stdlib.h>

long long llabs(long long j);

 

[引数]

j 絶対値を求める整数

 

[戻り値]

jの絶対値

 

[備考]

jの絶対値を求めた結果、long long型の整数値として表現できない時の動作は保証しません。

 

lldiv

long long型整数の除算の商と余りを計算します。

 

[指定形式]

#include <stdlib.h>

lldiv_t lldiv(long long numer,long long denom);

 

[引数]

numer 被除数

denom 除数

 

[戻り値]

numerをdenomで除算した結果の商と余り