「C言語/標準ライブラリ/stdlib.h」の版間の差分

削除された内容 追加された内容
「概要」の追加
preタグをsourceタグに修正
106 行
<ref>『JISX3010:2003』p.221「7.20.1.1 atof関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
double atof(const char *nptr);
</presource>
*引数
:nptr 文字列
117 行
:atof関数とは、nptrが指す文字列の最初の部分を、double型の表現に変換する関数である。
:stof関数は、エラーが発生したときの動作を除けば、
<source lang=c>
<pre>
strtod(nptr, (char **)NULL)
</presource>
と等価である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
134 行
printf("dの値:%.2f\n", d);
}
</presource>
=== atoi, atol及びatoll関数 ===
<ref>『JISX3010:2003』p.221「7.20.1.2 atoi, atol及びatoll関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int atoi(const char *nptr);
long int atol(const char *nptr);
long long int atoll(const char *nptr);
</presource>
*引数
:nptr 文字列
153 行
:atoll関数とは、nptrが指す文字列の最初の部分を、long long int型の表現に変換する関数である。
これらの関数は、エラーが発生したときの動作を除けば、
<source lang=c>
<pre>
(int)strtol(nptr, (char **)NULL, 10)
strtol(nptr, (char **)NULL, 10)
strtoll(nptr, (char **)NULL, 10)
</presource>
とそれぞれ等価である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
172 行
printf("iの値:%d\n", i);
}
</presource>
=== strtod, strtof及びstrtold関数 ===
<ref>『JISX3010:2003』p.222「7.20.1.3 strtod, strtof及びstrtold関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
double strtod(const char * restrict nptr, char ** restrict endptr);
float strtof(const char * restrict nptr, char ** restrict endptr);
long double strtold(const char * restrict nptr, char ** restrict endptr);
</presource>
*引数
:nptr 入力文字列
193 行
:strtold関数とは、nptrが指す文字列の最初の部分を、long double型の表現に変換する関数である。
:これらの関数は、入力文字列を次の3つの部分に分割する。
<source lang=c>
<pre>
[空白類文字の並び][変換対象列][末尾の文字列]
</presource>
:空白類文字の並びは、isspace関数で規定される。
:変換対象列は、浮動小数点定数と同様の形式、又は無限大(INF及びINFINITY)若しくはNaNである。
202 行
:endptrが空ポインタでなければ、末尾の文字列へのポインタをendptrが指すオブジェクトに格納する。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
216 行
printf("endptrの値:%s\n", endptr);
}
</presource>
=== strtol, strtoll, strtoul及びstrtoull関数 ===
<ref>『JISX3010:2003』p.223「7.20.1.4 strtol, strtoll, strtoul及びstrtoull関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
long int strtol(const char * restrict nptr, char ** restrict endptr, int base);
226 行
unsigned long int strtoul(const char * restrict nptr, char ** restrict endptr, int base);
unsigned long long int strtoull(const char * restrict nptr, char ** restrict endptr, int base);
</presource>
*引数
:nptr 入力文字列
240 行
:strtoull関数とは、nptrが指す文字列の最初の部分を、baseで指定した基数で、unsigned long long int型の表現に変換する。
:これらの関数は、入力文字列を次の3つの部分に分割する。
<source lang=c>
<pre>
[空白類文字の並び][変換対象列][末尾の文字列]
</presource>
:空白類文字の並びは、isspace関数で規定される。
:変換対象列は、baseの値で決まる基数によって表現される整数と同様の形式である。
249 行
:endptrが空ポインタでなければ、末尾の文字列へのポインタをendptrが指すオブジェクトに格納する。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
263 行
printf("endptrの値:%s\n", endptr);
}
</presource>
 
== 疑似乱数列生成関数 ==
270 行
<ref>『JISX3010:2003』p.225「7.20.2.1 rand関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int rand(void);
</presource>
*引数
:なし
281 行
:rand関数とは、0以上RAND_MAX以下の範囲の疑似乱数整数列を計算する関数である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
295 行
printf("iの値:%d\n", i);
}
</presource>
=== srand関数 ===
<ref>『JISX3010:2003』p.225「7.20.2.2 srand関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void srand(unsigned int seed);
</presource>
*引数
:seed 疑似乱数列の種
319 行
<ref>『JISX3010:2003』p.226「7.20.3.1 calloc関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void *calloc(size_t nmemb, size_t size);
</presource>
*引数
:nmenb 個数
332 行
:その領域のすべてのビットは、0で初期化する。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
351 行
free(p);
}
</presource>
=== free関数 ===
<ref>『JISX3010:2003』p.226「7.20.3.2 free関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void free(void *ptr);
</presource>
*引数
:ptr
373 行
<ref>『JISX3010:2003』p.226「7.20.3.3 malloc関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void *malloc(size_t size);
</presource>
*引数
:size サイズ
385 行
:割り付けられたオブジェクトの値は不定である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
407 行
free(p);
}
</presource>
=== realloc関数 ===
<ref>『JISX3010:2003』p.226「7.20.3.4 realloc関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void *realloc(void *ptr, size_t size);
</presource>
*引数
:ptr
429 行
:新しいオブジェクトに対する記憶域の割り付けができなかった場合、古いオブジェクトは解放されずその値は変化しない。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
459 行
free(p);
}
</presource>
 
== 環境に関連する関数 ==
466 行
<ref>『JISX3010:2003』p.227「7.20.4.1 abort関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void abort(void);
</presource>
*引数
:なし
483 行
 
*例
<source lang=c>
<pre>
#include <stdlib.h>
 
490 行
abort();
}
</presource>
=== atexit関数 ===
<ref>『JISX3010:2003』p.227「7.20.4.2 atexit関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int atexit(void (*func)(void));
</presource>
*引数
:func 関数
506 行
:少なくとも32この関数の登録がサポートされる。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
521 行
printf("function関数が呼ばれました。\n");
}
</presource>
=== exit関数 ===
<ref>『JISX3010:2003』p.227「7.20.4.3 exit関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void exit(int status);
</presource>
*引数
:status 状態
541 行
#制御をホスト環境に戻す。statusの値が0又はEXIT_SUCCESSの場合、成功終了状態を処理系定義の形式で返す。statusの値がEXIT_FAILUREの場合、失敗終了状態を処理系定義の形式で返す。それ以外の場合、返される状態は処理系定義とする。
*例
<source lang=c>
<pre>
#include <stdlib.h>
 
548 行
exit(0);
}
</presource>
=== _Exit関数 ===
<ref>『JISX3010:2003』p.228「7.20.4.4 _Exit関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void _Exit(int status);
</presource>
*引数
:status 状態
570 行
 
*例
<source lang=c>
<pre>
#include <stdlib.h>
 
577 行
_Exit(0);
}
</presource>
=== getenv関数 ===
<ref>『JISX3010:2003』p.228「7.20.4.5 getenv関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
char *getenv(const char *name);
</presource>
*引数
:name 文字列
592 行
:getenv関数とは、ホスト環境が提供する環境の並びの中で、nameが指す文字列と一致する文字列を探索する関数である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
603 行
printf("osの値:%s\n", os);
}
</presource>
=== system関数 ===
<ref>『JISX3010:2003』p.228「7.20.4.6 system関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int system(const char *string);
</presource>
*引数
:string 空ポインタ、又はコマンド。
620 行
:stringが空ポインタでないとき、system関数は、stringが指す文字列をコマンドプロセッサへ、その文字列を実行させるために渡す。
*例
<source lang=c>
<pre>
#include <stdlib.h>
 
627 行
system("dir");//コマンドプロンプトを用いてファイルを一覧表示する。
}
</presource>
 
== 探索及び整列ユーティリティ ==
634 行
<ref>『JISX3010:2003』p.229「7.20.5.1 bsearch関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
</presource>
*引数
:key オブジェクト
655 行
:配列は、keyオブジェクトと比較して、小さい要素だけの部分、等しい要素だけの部分及び大きい要素だけの部分から構成され、これら3つの部分が、この順序で存在しなければならない。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
676 行
return *a-*b;
}
</presource>
=== qsort関数 ===
<ref>『JISX3010:2003』p.230「7.20.5.2 qsort関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdio.h>
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
</presource>
*引数
:base オブジェクト
701 行
:二つの要素が等しいとき、整列された配列内でのそれらの順序は未規定である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
723 行
return *a-*b;
}
</presource>
 
== 整数算術関数 ==
730 行
<ref>『JISX3010:2003』p.230「7.20.6.1 abs, labs, 及びllabs関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int abs(int j);
long int labs(long int j);
long long int llabs(long long int j);
</presource>
*引数
:j 整数
745 行
:llabs関数とは、整数jの絶対値を計算する関数である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
757 行
printf("iの値:%d\n", i);
}
</presource>
=== div, ldiv 及びlldiv関数 ===
<ref>『JISX3010:2003』p.230「7.20.6.2 div, ldiv, 及びlldiv関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
div_t div(int numer, int denom);
ldiv_t ldiv(long int numer, long int demon);
lldiv_t lldiv(long long int numer, long long int denom);
</presource>
*引数
:numer 割られる数
777 行
:lldiv関数は、一回の呼び出しでnumer/denom(商)及びnumer%denom(剰余)の両方を計算する関数である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
789 行
printf("10/3は%d。\n10%%3は%d。", dt.quot, dt.rem);
}
</presource>
 
== 多バイト文字・ワイド文字変換関数 ==
797 行
<ref>『JISX3010:2003』p.231「7.20.7.1 mblen関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int mblen(const char *s, size_t n);
</presource>
*引数
:s 多バイト文字
810 行
:mblen関数とは、sが空ポインタでないとき、sが指す多バイト文字を構成するバイト数を決定し、返却する関数である。
:mbtowc関数の変換状態が影響を受けないことを除き、
<source lang=c>
<pre>
mbtowc((wchar_t *)0, s, n)
</presource>
:と等価である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
831 行
printf("%sのバイト数は%d。\n", s, l);
}
</presource>
=== mbtowc関数 ===
<ref>『JISX3010:2003』p.231「7.20.7.2 mbtowc関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int mbtowc(wchar_t * restrict pwc, char * restrict s, size_t n);
</presource>
*引数
:pwc 値を格納するオブジェクト
853 行
#次に、pwcが空ポインタでない場合、pwcが指すオブジェクトにこの値を格納する関数である。対応するワイド文字がナルワイド文字である場合、この関数の状態は初期変換状態になる。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
871 行
wprintf(L"wcの値:%c\n", wc);
}
</presource>
=== wctomb関数 ===
<ref>『JISX3010:2003』p.232「7.20.7.3 wctomb関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
int wctomb(char *s, wchar_t wc);
</presource>
*引数
:s 値を格納する配列
891 行
#wcがナルワイド文字である場合、初期シフト状態に戻るために必要なシフトシーケンスがあればそれを格納し、さらになる文字を格納する。この場合、この関数の状態は初期変換状態になる。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
909 行
printf("mbの値:%s\n", mb);
}
</presource>
 
== 多バイト文字列・ワイド文字列変換関数 ==
917 行
<ref>『JISX3010:2003』p.232「7.20.8.1 mbstowcs関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
size_t mbstowcs(wchar_t * restrict pwcs, const char * restrict s, size_t n);
</presource>
*引数
:pwcs 変換したワイド文字列を格納する配列
937 行
:領域の重なり合うオブジェクト間でコピーが行われるとき、その動作は未定義である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
955 行
wprintf(L"wcsの値:%s\n", wcs);
}
</presource>
=== wcstombs関数 ===
<ref>『JISX3010:2003』p.233「7.20.8.2 wcstombs関数」</ref>
*形式
<source lang=c>
<pre>
#include <stdlib.h>
size_t wcstombs(char * restrict s, const wchar_t * restrict pwcs, size_t n);
</presource>
*引数
:s 変換した多バイト文字列を格納する配列
978 行
:領域の重なり合うオブジェクト間でコピーが行われるとき、その動作は未定義である。
*例
<source lang=c>
<pre>
#include <stdio.h>
#include <stdlib.h>
996 行
printf("mbsの値:%s\n", mbs);
}
</presource>
 
== 脚注 ==