トップC言語入門 > C言語標準ライブラリ関数

C言語標準ライブラリ関数

1.C言語標準ライブラリ関数一覧表

関数名プロトタイプヘッダファイル説明
absint abs(int n);stdlib.h 又は math.h 引数の絶対値を返す。実数版は double fabs(double x); である。

【戻り値】引数の絶対値
asctimechar *asctime(const struct tm *tp);time.h tp が指すtm構造体に格納されている時刻を文字列に変換して返却する。 例: Thu Nov 19 14:46:41 2015。文字列末尾に改行コード'\n'が含まれる。

【戻り値】変換文字列を指すポインタ
atofdouble atof(const char *str);stdlib.h 文字列で表現された数値をdouble型の数値に変換する。 変換不能なアルファベットなどの文字列の場合は0を返すが、数値が先頭にあればその値を返す。

【戻り値】 double型に変換した数値。変換不能文字は0を返す。 (数値の0であったか、変換不能で0が返されたのか区別できない。)
atoiint atoi(const char *str);stdlib.h 文字列で表現された数値をint型の数値に変換する。 変換不能なアルファベットなどの文字列の場合は0を返すが、数値が先頭にあればその値を返す。

【戻り値】 int型に変換した数値。変換不能文字は0を返す。(数値の0であったか、変換不能で0が返されたのか区別できない。)
atollong atol(const char *str);stdlib.h 文字列で表現された数値をlong型の数値に変換する。 変換不能なアルファベットなどの文字列の場合は0を返すが、数値が先頭にあればその値を返す。

【戻り値】 long型に変換した数値。変換不能文字は0を返す。(数値の0であったか、変換不能で0が返されたのか区別できない。)
bsearchvoid *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));stdlib.h 整列 (sort) 済みの配列から値を探索する。 bsearch 関数は先頭要素を base が指すオブジェクトの配列 (要素数が nmemb 個,各要素の大きさが size である配列) から、 key が指すオブジェクトに一致する要素を探索する。 base が指すオブジェクト配列は昇順に整列されている必要がある。

【戻り値】一致する要素が見つかったとき: 配列中の一致する要素へのポインタ、 一致する要素が見つからなかったとき: NULL
callocvoid *calloc(size_t n, size_t size);stdlib.h

ヒープメモリから size バイトのブロックを n個割り当てる。確保されたブロックは 0 クリアされている。 calloc関数で確保したメモリは、使用後、free関数で解放する。

【戻り値】 成功時: 確保したメモリブロックを指すポインタ 失敗時: NULL(メモリ不足により指定サイズ分のメモリが確保できないとき)
clockclock_t clock(void);time.h

プログラム実行開始からの経過時間(プロセッサ時間=プロセッサが動いた時間)を返却する。経過時間の精度は処理系に依存する。 clock関数を2回呼び出し、経過時間の差を求めることにより、処理時間を算出することができる。 経過時間を秒で表現するには、CLOCKS_PER_SECで割ればよい。

MinGW GCCの time.h では typedef long clock_t; と定義されている。 32ビットCコンパイラでは long型はint型と同じく32ビットであるから、 clock_t は int型と同じ32ビット整数である。 処理系によっては clock_t は64ビット整数となる。

【戻り値】 成功時: プログラム実行開始からの経過時間(プロセッサ時間) 失敗時: (clock_t)-1
ceildouble ceil(double ceil);math.h 小数点以下を切り上げる。
【戻り値】小数点以下を切り上げした値
cosdouble cos(double x);math.h 角度(単位:ラジアン) x の余弦 (cos) を計算し,結果を double 型で返す。
【戻り値】余弦値
ctimechar *ctime(const time_t *t);time.h time関数で取得した t(グリニッチ標準時(GMT)で1970/1/1 00:00:00 から現在までの経過秒数)を引数に、 「曜日 月 日 時:分:秒 年」の固定形式に変換された文字列(例: Thu Nov 19 14:46:41 2015)へのポインタを返す。
【戻り値】固定形式に変換された文字列へのポインタを返す。
difftimedouble difftime(time_t t1, time_t t2);time.h 二つの暦時間t1、t2の差をdouble型(単位:秒)で返す。

戻り値がdouble型であるが、引数は time_t(long型整数)のため、小数点以下の値は得られない。 短い時間間隔に対して、秒単位以下の精度を得たいときは clock関数を使用し、 長期間の時間差を計測するときに difftime関数を使う。

また、clock関数はプロセッサが実際に動いた時間を返すに対して、 difftimeはカレンダ上の経過秒数であるため、この意味での差異もある。
【戻り値】二つの暦時間の差を返す(単位:秒)

exitvoid exit(int status);stdlib.h 正常プログラム終了を引き起こす(呼び出し元に戻らない)。statusは親プロセスへ返す値である。main関数では return status; と同じである。
【戻り値】なし。
expdouble exp(double x);math.h 自然対数の底(ネイピア数) e の x 乗(ex)を返す指数関数。e の値は,2.71828182845904・・・・・・・・・。(関連関数:pow, log)
【戻り値】自然対数の底(ネイピア数) e の x 乗
fabsdouble fabs(double x);math.h double型引数の絶対値をdouble型で返す。整数版は int abs(int n) である。

【戻り値】引数の絶対値
feofint feof(FILE *fp);stdio.h

ファイルが終わりに到達したか調べる。
【戻り値】終わりに到達した場合は真、到達していない場合は偽。

fcloseint fclose(FILE *stream);stdio.h

stream が指すファイルをクローズする。 ストリームに対してバッファリングされただけでまだ書き込まれていないデータはファイルに書き込む。 また,バッファリングされただけでまだ読み取られていないデータは破棄する。
【戻り値】成功時: 0、失敗時: EOF(-1)

fgetcint fgetc(FILE *stream);stdio.h

stream が指すストリームから 1 文字分文字を読み取る。 文字は unsigned char 型として取り込まれ、int 型に変換されて戻り値(0〜255)になる。 失敗した(ファイルの終わりに達した)ときは -1 が返される。
【戻り値】成功すると読み込んだ文字を返し、失敗する(ファイルの終わりを読み取った)と EOF(-1) を返す。

fgetposint fgetpos(FILE *fp, fpos_t *ptr);stdio.h

現在のファイル位置を引数 ptr で指定された場所に格納する。
【戻り値】成功時: 0、失敗時: 0以外。

fgetschar *fgets(char *s, int size, FILE *stream); stdio.h stream から最大で size - 1 個の文字を読み込み、 s が指すバッファに格納する。 読み込みは EOF または改行文字を読み込んだ後で停止する。 読み込まれた改行文字はバッファに格納される。 終端のヌルバイト ('\0') が一つバッファの中の最後の文字の後に書き込まれる。
【戻り値】成功すると s、失敗すると NULL を返す
floordouble floor(double ceil);math.h 小数点以下を切り捨てる。
【戻り値】小数点以下を切り捨てた値
fopenFILE *fopen(const char *filename, const char *mode);stdio.h

ファイル filename を モード mode でオープンし,そのファイルにストリーム (stream) を結び付ける。 引数 mode は文字列で指定する。

テキストファイルに対して、引数 mode に指定できるモードは以下の通り。

モード機能ファイルがないとき
"r"読み取りエラー
"w"書き込み新規作成
"a"追加書き込み新規作成

バイナリファイルに対してはそれぞれのモード引数を "rb", "wb", "ab" とする。

更新(読み取り及び書き込み)については、テキストファイルでは "r+", "w+", "a+" とし、 バイナリファイルでは "r+b", "w+b", "a+b" または "rb+", "wb+", "ab+" とする。
【戻り値】成功時: オープンしたストリームを制御するオブジェクトへのポインタ、失敗時: NULL

fputsint fputs(const char *str, FILE *fp);stdio.h ファイルポインタfpに文字列strを出力する。改行コード(\n)は自動で出力しない。
【戻り値】成功すれば負では無い値を、エラーであれば -1 を返す。
freadsize_t fread(void *buf, size_t size, size_t n, FILE *fp);stdio.h ファイルfpからsizeバイトのデータをn個読み込み、bufに格納する。 ファイル位置指示子を読み込んだデータバイト分進める。 エラーが発生した場合にはファイル位置指示子の値は不定である。
【戻り値】成功時: 読み取った要素の個数 (バイト数ではない)、 ファイル終了時及びエラー時: nより小さな値
【プログラム事例】テキストファイルの一括読み込み
freevoid free(void *ptr);stdlib.h calloc関数、malloc関数、realloc関数で割り当てたメモリブロックを解放する。
【戻り値】なし
fscanfint fscanf(FILE *fp, const char *format, ...);stdio.h 書式付き(空白やカンマ区切り)ファイルを読み込む。
【戻り値】成功すると読み込んだ項目数を返し、失敗すると -1 を返す。
【プログラム事例】CSV読み込み
fseekint fseek(FILE *fp, long offset, int ptrname);stdio.h

ファイル位置を変更する。

ファイル位置の基準:SEEK_SET 先頭、SEEK_CUR 現在の位置、SEEK_END 終わり
【戻り値】成功時: 0、失敗時: 0以外。
【プログラム事例】ftell/fseek

fsetposint fgetpos(FILE *fp, const fpos_t *ptr);stdio.h

ファイル位置を引数 ptr で指定された位置に変更する。 fgetpos関数である位置を覚えて置き、読み/書きを実行した後でその位置に戻すときに使用する。
【戻り値】成功時: 0、失敗時: 0以外。

ftelllong ftell(FILE *stream);stdio.h stream が指すストリーム (stream) の現在のファイル位置表示子の値を取得する。 バイナリストリームの場合は,その値はファイルの始めからの文字数に等しい。
【戻り値】現在のファイル位置表示子の値、失敗すると -1L を返す。
【プログラム事例】ftell/fseek
fwritesize_t fwrite(const void *buf, size_t size, size_t n, FILE *fp);stdio.h

bufからファイルfpへsizeバイトのデータをn個書き込む。ファイル位置指示子を書き込んだデータバイト分進める。
【戻り値】成功時: 書き込んだバイト数、失敗時: nより小さい値。

getcint getc(FILE *stream);stdio.h

stream が指すストリームから 1 文字分文字を読み取る。 文字は unsigned char 型として取り込まれ、int 型に変換されて戻り値(0〜255)になる。 失敗した(ファイルの終わりに達した)ときは -1 が返される。

getc は基本的には fgetc と同じであるが、マクロで実装してもよいことになっているため、 stream が2回以上評価されるかも知れないため、副作用を伴う式では使えない。
【戻り値】成功すると読み込んだ文字を返し、失敗する(ファイルの終わりを読み取った)と EOF(-1) を返す。

getcharint getchar(void);stdio.h

標準入力 (standard input) から 1 文字を読み取る。 文字は unsigned char 型として取り込まれ、int 型に変換されて戻り値(0〜255)になる。 失敗した(ファイルの終わりに達した)ときは -1 が返される。
【戻り値】成功すると読み込んだ文字を返し、失敗する(ファイルの終わり)と EOF(-1) を返す。
【プログラム事例: test.c】

#include <stdio.h>
void main() {
    int c;
    while ((c = getchar()) != EOF) {
        printf("%d\t", c);
    }
}

実行例を下に示す。キー入力は「123いろは」+エンターキー。 ファイルの終わりは Ctrl+Z キー。

c:\sys>test.exe
123いろは
49      50      51      130     162     130     235     130     205     10
^Z
getschar *gets(char * s);stdio.h

標準入力 (standard input) から 1 行分(改行文字まで、またはファイルの終わりまで) 文字列を読み取り、 s が指す配列に格納する。配列に格納した文字の後に'\0' を書き込む。

sが示す配列のサイズを超える文字列が読み込まれるとバッファ・オーバランが起きるため、 使わない方がよい。C11では削除された。代りに fgets を使う。 但し、getsは改行文字をバッファに書き込まないが、fgetsは改行文字もバッファに書き込む。 gets、fgetsともストリームに改行文字は残らない。
【戻り値】読み取り成功時には s、1文字も読み取れなかったとき NULL を返す。

get
timeofday
int gettimeofday(struct timeval *tv, struct timezone *tz);sys/time.h 紀元 (Epoch; 1970-01-01 00:00:00 (UTC)) からの経過時刻とタイムゾーンを取得する。

POSIX.1-2008 では gettimeofday() は廃止予定とされており、代わりに clock_gettime の使用が推奨されている [出典]。

Windows OS は gettimeofday 関数をサポートしていない。 Windowsで精度高い時刻を得るには GetSystemTime関数、GetSystemTimeAsFileTime関数を使用する。
【戻り値】成功時: 0、失敗時: -1
【プログラム事例】高い精度でプログラムの時間を計測する

isalnumint isalnum(int c);ctype.h 英字または数字であるかを調べる。 (isalpha(c) || isdigit(c)) と等価である。
【戻り値】文字 c が英字または数字であるとき 1 (真)、そうでないとき 0 (偽)。
isalphaint isalpha(int c);ctype.h 文字 c がアルファベット ('A'〜'Z', 'a'〜'z') なら 1 (真) を返す。
【戻り値】文字 c がアルファベットのとき 1 (真)、そうでないとき 0 (偽)。
isasciiint isascii(int c);ctype.h 文字 c が、ASCII文字セットに合致する 7ビットの unsigned char であるかを調べる。
【戻り値】文字 c がASCII文字であるとき 1 (真)、そうでないとき 0 (偽)。
isdigitint isdigit(int c);ctype.h 文字 c が数字 ('0'〜'9') なら 1 (真) を返す。
【戻り値】文字 c が数字のとき 1 (真)、そうでないとき 0 (偽)。
islowerint islower(int c);ctype.h 文字 c が小文字かどうかを調べる。
【戻り値】文字 c が小文字のとき 1 (真)、そうでないとき 0 (偽)。
isupperint isupper(int c);ctype.h 文字 c が大文字かどうかを調べる。
【戻り値】文字 c が大文字のとき 1 (真)、そうでないとき 0 (偽)。
isxdigitint isxdigit(int c);ctype.h 文字 c が 16進数での数字(0〜9、a〜f、A〜F)かどうかを調べる。
【戻り値】文字 c が16進数での数字のとき 1 (真)、そうでないとき 0 (偽)。
localtimestruct tm *localtime(const time_t *t);time.h time関数で取得した「グリニッチ標準時(GMT)で1970/1/1 00:00:00 から現在までの経過秒数」を、 地方標準時(日本時間)として構造体tmへ変換し、その構造体のアドレスを返す。
【戻り値】tm構造体へのポインタ
【プログラム事例】現在日時の表示
logdouble log(double x);math.h x の自然対数(logarithm)を返す。数学では loge(x) と書く。指数関数 exの逆関数である。
【戻り値】x の自然対数
log10double log10(double x);math.h x の常用対数(10を底とする対数)を返す。
【戻り値】x の常用対数(10を底とする対数)
mallocvoid *malloc(size_t size);stdlib.h ヒープメモリから size バイトの領域を割り当てる。確保された領域は 0 クリアされない。 malloc関数で確保したメモリは、使用後、free関数で解放する。
【戻り値】成功時: 確保したメモリ領域を指すポインタ、失敗時:NULL(メモリ不足により指定サイズ分のメモリが確保できないとき)
memcpyvoid *memcpy(void *buf1, const void *buf2, size_t len); string.hbuf2からbuf1へlenバイトをコピーする。 途中にヌル文字(\0)があってもlen文字数をコピーする。コピー後、末尾にヌル文字を自動で設定しない。
【戻り値】buf1
memmovevoid *memmove(void *buf1, const void *buf2, size_t len);string.h buf2 が指すオブジェクトから,buf1 が指すオブジェクトに len バイト分コピーする。 memcpy関数とは異なり、領域の重なりがあった場合も正しくコピーされる。
memsetvoid *memset(void *buf, int ch, size_t n); string.hbuf の先頭から n バイト分 ch をセットする。 buf を超えてセットした場合の動作は未定義である。 バイト単位のため、一般にint配列のセットには使用できないが、例えば ゼロクリアならば使える。
【戻り値】buf
mkdirint mkdir(const char *pathname, mode_t mode);sys/stat.h ディレクトリ(フォルダ)を作成する。 pathnameは作成するディレクトリをパス名で指定する。 modeはディレクトリのアクセス許可情報(パーミッション)を指定する。 この関数は、C言語のライブラリ関数(標準関数)ではないので、コンパイラにより、使えない場合がある。
【戻り値】成功時: 0、失敗時: -1
mktimetime_t mktime(struct tm *ptm);time.h ptm が指す構造体の時刻を、time関数が使う時刻と同じ形式の時刻に変換する。

構造体tmのメンバ値の一部が、適正な値ではない場合は、mktime関数内で調節される。 この機能により日付から曜日を求めたり、年内の通算日数を求めることができる。
【戻り値】成功時: 変換された時刻、失敗時: -1
【プログラム事例】 ある日から何日か後(または前)の日付を求める日付から曜日を求める

powdouble pow(double x, double y);math.h x の y 乗(xy)を返す。 x を底あるいは基数、y を指数と呼ぶ。
【戻り値】x の y 乗
putchar int putchar(int c);stdio.h 標準出力(stdout)に文字 c を出力する。
【戻り値】成功時: 出力した文字、失敗時: EOF(-1)
puts int puts(const char *s);stdio.h 標準出力(stdout)にsが指す文字列を書き込み、出力の最後に改行を追加する。終端の '\0' は出力しない。
【戻り値】成功時: 正の値、失敗時: EOF(-1)
qsortvoid qsort(void *data, size_t cnt, size_t size, int (*func)(const void *, const void *)); stdlib.h void *data:ソート対象データ
size_t cnt:ソート対象データ件数
size_t size:ソート対象データ1件当りのサイズ
int func:int型の比較関数(コールバック関数)。 引数1 < 引数2 のとき負、引数1 == 引数2 のとき 0、引数1 > 引数2 のとき正の整数を返す。
【戻り値】なし
【プログラム事例】コールバック
randint rand(void);stdlib.h 0〜RAND_MAXまでの擬似乱数(ランダム数)を返す。 int型が 32ビット幅であっても、RAND_MAX は 15ビットの 0x7FFF(32767) であることが多い。 コンパイラの実装に依存するが、生成される疑似乱数の性質に問題があることが多いので、 高度な乱数を必要する場合には、このrand関数でよいかどうか、十分な吟味が必要である。
【戻り値】0〜RAND_MAXまでの整数である乱数を返す。
reallocvoid *realloc(void *ptr , size_t len);stdlib.h

lenで指定された大きさの領域を新たに確保してその先頭アドレスを返す。 mallocなどで確保された領域を、新たなサイズで再確保する関数である。

新たなサイズは、以前より大きくとも小さくとも構わない。 以前より大きなサイズを確保した場合、元の領域の内容はコピーされるが、 新たに増加した部分に関しては、その内容は不定である。 また、以前より小さな値を確保した場合、減少した箇所は当然ながら内容は破棄されるが、それ以外の箇所の内容はコピーされる。

確保した領域はfreeで解放しなければならないが、プログラム終了時であればOSが自動で解放する。
【戻り値】成功時: 新たに確保した領域の先頭アドレス(以前のアドレスと異なる場合がある)、 失敗時:NULL。元のブロックは変更されない。

removeint remove(const char *filename);stdio.h ファイルを削除する。
【戻り値】成功時:0、失敗時:0以外
renameint rename(const char *oldname, const char *newname);stdio.h ファイル名を変更する。

rename("./Result.html", "./doc/Result.html"); の場合、docディレクトリにコピーされたが、 ./Result.html は削除されない。(GCCとMS VCで確認した)

C言語標準ライブラリには、ファイルをコピーする関数はないが、 ディレクトリが異なった場合、rename関数はファイルの移動ではなく、 ファイルのコピーになった。C言語の標準規格がどうなっているかは確認していない。実装に依存するのかも知れない。
【戻り値】成功時:0、失敗時:-1

rounddouble round(double ceil);math.h 小数点以下を四捨五入する。
【戻り値】小数点以下を四捨五入した値
scanfint scanf(const char *format, ...);stdio.h キーボードから書式付き(空白やカンマ区切り)データを読み込む。
【戻り値】成功すると読み込んだ項目数を返し、失敗すると -1 を返す。
【プログラム事例】データの読み込み(scanf関数)
sindouble sin(double x);math.h 角度(単位:ラジアン) x の正弦 (sin) を計算し、結果を double 型で返す。
【戻り値】正弦値
srandvoid srand(unsigned int seed);stdlib.h 擬似乱数(ランダム数)の種を設定する。rand関数を使うとき、このsrand関数で初期化を行う。 プログラム実行毎に異なる乱数列を発生したいときは、初期化で通常 srand((unsigned int)time(NULL)); を実行する。
【戻り値】なし
sscanfint sscanf(const char *s, const char *format, ...);stdio.h 文字列から書式付き(空白やカンマ区切り)データを読み込む。
【戻り値】成功すると読み込んだ項目数を返し、失敗すると -1 を返す。
【プログラム事例】
    char s[] = "123,0.456,2.104e+02";
    double d[3];
    sscanf(s, "%lf,%lf,%lf", &d[0], &d[1], &d[2]);
    printf("%f,%f,%f", d[0], d[1], d[2]);
sqrtdouble sqrt(double x);math.h x の平方根を返却する。x が負の場合、定義城エラーが発生する。
【戻り値】x の平方根
statint stat(const char *path, struct stat *buf);sys/stat.h ファイルやディレクトリの状態を取得する。 この関数は、C言語のライブラリ関数(標準関数)ではないので、コンパイラにより、使えない場合がある。
【戻り値】成功時: 0、失敗時: -1
strchrchar *strchr(const char *s, int c);string.h 文字列 s の先頭から文字 c を探し、最初に見つかった位置をポインタで返却する。 見つからなかったときにはNULLを返却する。
【戻り値】成功時: 最初に見つかった位置(アドレス)、失敗時(見つからなかった時): NULL
strrchrchar *strrchr(const char *s, int c);string.h 文字列 s の先頭から文字 c を探し、最後に見つかった位置をポインタで返却する。 見つからなかったときにはNULLを返却する。後から探して、最初に見つかった位置と同じ。中間の r は reverse を意味する。
【戻り値】成功時: 最後に見つかった位置(アドレス)、失敗時(見つからなかった時): NULL
strcmpint strcmp(const char *s1, const char *s2);string.h 文字列s1と文字列s2を比較する。
【戻り値】s1 > s2 のとき正の値、s1 < s2 のとき負の値、s1 == s2 のとき 0 を返す。この大小関係は文字コード順による。
strncmpint strncmp(const char *s1, const char *s2, size_t len);string.h 文字列s1と文字列s2を先頭から len 文字を比較する。
【戻り値】s1 > s2 のとき正の値、s1 < s2 のとき負の値、s1 == s2 のとき 0 を返す。この大小関係は文字コード順による。
strcpyvoid *strcpy(char *str1, const char *str2); string.h コピー先 str1 へコピー元 str2 の '\0' までをコピーする。つまり、str1 の末尾に '\0' が付加される。 str1 は末尾の '\0' を含めて、コピー時に領域溢れが生じない充分なサイズが必要である。
【戻り値】str1
strncpyvoid *strncpy(char *str1, const char *str2, size_t len); string.hstr2からstr1へlen文字数をコピーする。 途中にヌル文字(\0)があったらその後はlen文字数分までヌル文字を埋める。コピー後、末尾にヌル文字を自動で設定しない。
【戻り値】str1
strdupint strdup(const char *s);string.h 文字列sを新しく確保したメモリにコピーして、その文字列の先頭アドレスを返す。 戻り値は用済みになったら free関数で解放する必要がある。
【戻り値】成功時: コピー先文字列の先頭アドレス、失敗(メモリが確保できなかった)時: NULL
strlensize_t strlen(const char *s);string.h 文字列 *s の長さを取得し返却する。長さに末尾のヌル文字 '\0' は含まない。
【戻り値】文字列 *s の長さ
strstrchar *strstr(const char *s1, const char *s2);string.h 文字列 s1 の先頭から文字列 s2 を探し、見つかったときにはその位置をポインタで返却し、 見つからなかったときにはNULLを返却する。
【戻り値】成功時: 最初に見つかった位置(アドレス)、失敗時(見つからなかった時): NULL
strtoddouble strtod(const char *s, char **endptr);stdlib.h 10進数表記(指数表記も可)の文字列 s を、double型に変換し返却する。 文字列中の変換不可能な文字の位置(ポインタ)をendptrに格納する。 全文字が変換された場合には末尾のヌル文字'\0'の位置がendptrに格納される。
【戻り値】 成功時: s の値をdoubleで返却。 失敗時: 0 (変換できる文字が全くなかったとき 0 が戻され、endptrにはsのアドレスが格納される)
strtokchar *strtok(char *s1, const char *s2);string.h

分解対象文字列 s1 を、文字群 s2 中の文字を区切りに字句(トークン)に分解する。 最初の呼び出しでは s1 には分解対象の文字列を指定する。2回目以降の呼び出しでは s1 に NULL を指定する。

区切り文字は2個以上指定することもできる。

区切り文字があった場所はヌル文字 '\0' に置き換えられる。
【戻り値】 成功(トークンが見つかった)時: 字句(トークン)へのポインタ。 失敗(トークンが見つからなかった)時: NULL
【プログラム事例】

    char s[] = "123,abc,0.456,XYZ";
    char *p = strtok(s, ",");
    do {
        printf("%s\n", p);
    } while ((p = strtok(NULL, ",")) != NULL);
strtollong strtol(const char *s, char **endptr, int base);stdlib.h 文字列 s を、baseで指定された基数でlong型に変換し返却する。 文字列中の変換不可能な文字の位置(ポインタ)をendptrに格納する。 例えば char *s = "123ABC"; で base=10 のときは、 A の位置のアドレス(s+3)、base=16 のときは、文字列末尾'\0'の位置のアドレス (s+6) が戻される。
【戻り値】 成功時: s の値をlongで返却。 失敗時: 0 (変換できる文字が全くなかったとき 0 が戻され、endptrにはsのアドレスが格納される)
systemint system(const char *command);stdlib.h system関数は command をコマンド インタープリターに渡し、 その文字列がオペレーティング システム コマンドとして実行される。 system は、COMSPEC および PATH の各環境変数を使用して、コマンド インタープリター ファイル CMD.exe を見つける。 command が NULL の場合、コマンド インタープリターの存在を確認するだけである。
【戻り値】引数が空ポインタであれば、コマンドプロセッサが使用可能であるときに限り 0 以外の値を返す。 実引数が空ポインタでないとき、system関数は処理系定義の値を返す。
tandouble tan(double x);math.h 角度(単位:ラジアン) x の正接 (tan) を計算し、結果を double 型で返す。
【戻り値】正接値
timetime_t time(time_t *timer);time.h time.h で定義されている time_t は通常 typedef long time_t; である。
【戻り値】一般には グリニッチ標準時(GMT)の1970年1月1日の00:00:00 から現在までの経過時間(秒単位)がもどされる。 失敗時は -1 が戻される。引数 timer が NULL でなかったときは、同じ値が timerの示すアドレスにもセットされる。
tolowerint tolower(int c);ctype.h tolower 関数は,c を大文字から小文字に変換して返す。
【戻り値】小文字に変換された文字
toupperint toupper(int c);ctype.h tolower 関数は,c を小文字から大文字に変換して返す。
【戻り値】大文字に変換された文字
ungetcint ungetc(int c, FILE *stream);stdio.h後の read 操作で読めるように、 c を unsigned char にキャストして stream に書き戻す。 この文字が、次の読み込みで最初に読みだされる文字となる。 書き戻しが保証されているのは、一文字だけである。
【戻り値】成功時: 押し戻した1文字、失敗時: EOF(-1)。
utimeint utime(const char *filename, struct utimbuf *buf);sys/
utime.h
filename で示される inode のアクセス時刻と修正時刻を buf 中の actime と modtime にそれぞれ変更する。 buf が NULL の場合、ファイルのアクセス時刻と修正時刻は現在の時刻に設定される。
【戻り値】成功時: 0、失敗時: -1。
vprintfint vprintf(const char *format, va_list ap);stdio.h
stdarg.h
printf()関数と等価であり、可変数引数の代わりに va_list を引数として呼び出される点だけが異なる。 この関数では va_end マクロは呼び出されない。 この関数は va_arg を呼び出すので、呼び出し後の ap の値は未定義(不定)である。
    va_list arg;

    va_start(arg, format);
    vprintf(format, arg);
    va_end(arg);
【戻り値】成功時:書き出された文字数、失敗時: 負の値。


WIN32限定ライブラリ
関数名プロトタイプヘッダファイル説明
_findfirstintptr_t _findfirst(const char *filespec, struct _finddata_t *fileinfo);io.h

filespec 引数に指定されたファイル(ワイルドカード文字を含むことができる)と一致するファイルに関する情報を提供する。

intptr_t はオブジェクトを指すポインタを保持可能な符号付き整数型である。WIN32(32ビットOS) の場合、int 型(32ビット)と同じ。 WIN64(64ビットOS)では long long型(64ビット)となる。stdint.h で定義されている。

【戻り値】成功すると、_findfirst の戻り値は 後続の _findnext の呼び出しで使用できる、 filespec 仕様に一致するファイルを識別する検索ハンドルを返す。 それ以外の場合は -1 を返す。
【プログラム事例】ディレクトリ内のファイルリストを得る
_findnextint _findnext(intptr_t handle, struct _finddata_t *fileinfo);io.h

先の _findfirst で使用した filespec と一致する、次のファイルを検索する。 その後、更に次の名前がある場合、fileinfo 構造体の内容を適宜変更する。

【戻り値】正常終了した場合は、0 を返す。 それ以外の場合、 -1 を返す。
_findcloseint _findclose(intptr_t handle);io.h

指定した検索ハンドル(_findfirst関数の呼び出しで得たもの)を閉じ、関連付けられたリソースを解放する。

【戻り値】正常終了した場合は、0 を返す。 それ以外の場合、 -1 を返す。
CloseHandleBOOL CloseHandle(HANDLE hObject);windows.h

開いているオブジェクトハンドルを閉じる。

【戻り値】成功時:0以外の値、失敗時:0
CreateFileHANDLE CreateFile(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); windows.h

コンソール、通信リソース、ファイル、パイプなどのオブジェクトを作成するか開き、 そのオブジェクトをアクセスするために利用できるハンドルを返す。

【戻り値】成功時:指定したファイルに対する、開いているハンドル、失敗時:INVALID_HANDLE_VALUE
GetSystemTimeVOID GetSystemTime(LPSYSTEMTIME lpSystemTime);windows.h

現在のシステム日時を取得する。システム時刻は、世界協定時刻(UTC)で表される。 SYSTEMTIME構造体へのポインタを引数とする。関数から制御が返ると、この構造体に、現在のシステム日時が格納される。

【戻り値】なし。
GetSystemTime
AsFileTime
VOID GetSystemTimeAsFileTime(LPFILETIME lpFileTime);windows.h

現在のシステム日時を取得する。システム時刻は、世界協定時刻(UTC)で表される。 FILETIME構造体へのポインタを引数とする。関数から制御が返ると、この構造体に、現在のシステム日時が格納される。

【戻り値】なし。
【プログラム事例】高い精度でプログラムの時間を計測する
SetFileTimeBOOL SetFileTime( HANDLE hFile, CONST FILETIME *lpCreationTime, CONST FILETIME *lpLastAccessTime, CONST FILETIME *lpLastWriteTime);windows.h

ファイルの作成日時、最終アクセス日時、最終更新日時を設定する。

【戻り値】成功時:0 以外の値、失敗時:0
SleepVOID Sleep(DWORD dwMilliseconds);windows.h

指定された時間(単位:ミリ秒)にわたって、現在のスレッドの実行を中断する。

【戻り値】なし。
SystemTime
ToFileTime
BOOL SystemTimeToFileTime(CONST SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime);windows.h

指定された時間(単位:ミリ秒)にわたって、現在のスレッドの実行を中断する。

【戻り値】成功時:0 以外の値、失敗時:0


POSIX限定ライブラリ
POSIX(Portable Operating System Interface)は、異なるOS実装に共通のAPIを定め、移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的として IEEEが策定したアプリケーションインタフェース規格である。
関数名プロトタイプヘッダファイル説明
opendirDIR opendir(const char *name);dirent.h

ディレクトリ name に対応する ディレクトリストリームをオープンし、そのストリームへのポインターを返す。 ストリームの位置はディレクトリの先頭のエントリーに設定される。

【戻り値】ディレクトリストリームへのポインターを返す。 エラーの場合は、NULL が返される。
【プログラム事例】ディレクトリ内のファイルリストを得る
readdirstruct dirent *readdir(DIR *dirp);dirent.h

【戻り値】dirp が指すディレクトリストリームの中で、 次のディレクトリエントリーを表す dirent 構造体へのポインターを返す。 ディレクトリストリームの末尾に達した場合や、 エラーが発生した場合は、 NULL を返す。
closedirint closedir(DIR *dirp);dirent.h

dirp に関連付けられた ディレクトリストリームをクローズする。

【戻り値】正常終了した場合は、0 を返す。 それ以外の場合、 -1 を返す。
sleepunsigned int sleep(unsigned int seconds);unistd.h

呼び出したスレッドを seconds 秒間または無視されないシグナルが到着するまで休止する。

【戻り値】要求された時間が過ぎた場合はゼロを返す。 呼び出しがシグナルハンドラーに割り込まれた場合は、 休止の残り時間を返す。

参照サイト

[1] ライブラリ関数一覧
[2] JM Project
[3] C言語 関数リファレンス
[4] CRT 関数リファレンス (アルファベット順)
[5] C言語 標準関数
[6] C言語関数辞典
[7] 【C言語講座】標準ライブラリ
[8]
[9]
[10]