プログラミング言語

C言語ライブラリ関数

自分の備忘録としてC言語のライブラリ関数まとめました。

C言語の簡単なプログラム

#include <stdio.h> /*ヘッダーファイルをインクルード*/

int main(){

printf("Hello World!!\n");/*stdio.hに入っているライブラリ関数*/

return 0;
}

入出力 <stdio.h>



主にファイルを取り扱う関数です。

C言語では、ディスク以外の周辺機器もファイル扱いできます。

また、規定のファイルポインタとしてこれらを扱うことが出来ます。

規定のファイルポインタ

stdin 標準入力(普通はキーボード)

stdout 標準出力(普通はディスプレイ)

stderr 標準エラー出力(普通はディスプレイ)

これらは、リダイレクト等の方法でユーザーが変更することもできますし、

環境によっては、別の機器に関連づけられたり、無効になっていることもあります。

fopen

関数型 : FILE *fopen(const char *filename, const char *mode);

引数  : ファイル名、モード文字列

戻り値 : 開いたファイルポインタ。失敗した場合はNULL。

機能  : ファイルを開く。

モード : r 読み込み、w 新規、a 追加。b付加でバイナリ、+付加で入出力両用。

fclose

関数型 : int fclose(FILE *fp);

引数  : ファイルポインタ

戻り値 : 成功した場合は0、失敗したときはEOF

機能  : ファイルを閉じる。

fgetc

関数型 : int fgetc(FILE *fp);

引数  : ファイルポインタ

戻り値 : 読み出した文字。失敗したか終わりに到達した場合はEOF。

機能  : ファイルから1文字読み出す。

getc

機能  : fgetcと全く同じ。

注意  : マクロになっていることがあるので副作用に注意。

fgets

関数型 : char *fgets(char *s, int n, FILE *fp);

引数  : 文字列を格納するバッファ、バッファサイズ、ファイルポインタ

戻り値 : 引数で指定したバッファ。失敗したか終わりに到達した場合はNULL。

機能  : ファイルから1行読み出す。結果に改行を含む。

fputc

関数型 : int fputc(int c, FILE *fp);

引数  : 文字、ファイルポインタ

戻り値 : 出力文字。失敗したときはEOF。

機能  : ファイルに1文字書き込む。

putc

機能  : fputcと全く同じ。

注意  : マクロになっていることがあるので副作用に注意。

fputs

関数型 : int fputs(const char *s, FILE *fp);

引数  : 文字列、ファイルポインタ

戻り値 : 成功した場合は真、失敗したときはEOF。

機能  : ファイルに文字列を書き込む。

fread

関数型 : size_t fread(void *ptr, size_t size, size_t nelem, FILE *fp);

引数  : 読み込み結果を格納するバッファ、1項目のサイズ、項目数、ファイルポインタ

戻り値 : 読み込んだ項目数。失敗した場合は0。

機能  : ファイルから固定サイズの項目を読み込む。

fwrite

関数型 : size_t fwrite(const void *ptr, size_t size, size_t nelem, FILE *fp);

引数  : 書き込むバッファ、1項目のサイズ、項目数、ファイルポインタ

戻り値 : 書き込んだ項目数。失敗した場合は0。

機能  : ファイルに固定サイズの項目を書き込む。

fprintf

関数型 : int fprintf(FILE *fp, const char *format, …);

引数  : ファイルポインタ、書式付き文字列、可変個の変数

戻り値 : 出力文字数。失敗したときは負の値。

機能  : ファイルに書式付き文字列を書き込む。

fscanf

関数型 : int fscanf(FILE *fp, const char *format, …);

引数  : ファイルポインタ、変換指定文字列、可変個のバッファ

戻り値 : 変換に成功した数。失敗した場合は-1。

機能  : ファイルから文字列を読み込み指定された形式に変換する。

ftell

関数型 : long ftell(FILE *fp);

引数  : ファイルポインタ

戻り値 : 現在のファイル位置。

機能  : ファイル位置を取得する。

fseek

関数型 : int fseek(FILE *fp, long offset, int ptrname);

引数  : ファイルポインタ、ファイル位置の移動数、ファイル位置の基準

戻り値 : 成功した場合は0、失敗したときは0以外。

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

位置  : SEEK_SET 先頭、SEEK_CUR 現在の位置、SEEK_END 終わり。

fgetpos

関数型 : int fgetpos(FILE *fp, fpos_t *ptr);

引数  : ファイルポインタ、ファイル位置を格納する変数のポインタ

戻り値 : 成功した場合は0、失敗したときは0以外。

機能  : 現在のファイル位置を格納する。

fsetpos

関数型 : int fsetpos(FILE *fp, const fpos_t *ptr);

引数  : ファイルポインタ、ファイル位置を格納する変数のポインタ

戻り値 : 成功した場合は0、失敗したときは0以外。

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

feof

関数型 : int feof(FILE *fp);

引数  : ファイルポインタ

戻り値 : 終わりに到達した場合は真、到達していない場合は偽。

機能  : ファイルが終わりに到達したか調べる。

ferror

関数型 : int ferror(FILE *fp);

引数  : ファイルポインタ

戻り値 : エラー発生した場合は真、発生していない時は偽。

機能  : ファイルにエラーが発生したか調べる。

clearerr

関数型 : void clearerr(FILE *fp);

引数  : ファイルポインタ

機能  : ファイルのエラーの時に回復する。

fflush

関数型 : int fflush(FILE *fp);

引数  : ファイルポインタ

戻り値 : 成功した場合は0、失敗したときは偽。

機能  : 出力バッファを強制出力する。

注意  : コンパイラによっては入力バッファをクリアできる。ただし邪道である。

freopen

関数型 : FILE *freopen(const char *filename, const char *mode, FILE *fp);

引数  : ファイル名、モード文字列、ファイルポインタ

戻り値 : 引数で指定されたファイルポインタ。失敗した場合はNULL。

機能  : ファイルポインタの再割り当て。

rename

関数型 : int rename(const char *oldname, const char *newname);

引数  : 現在のファイル名、新しいファイル名

戻り値 : 成功した場合は0、失敗したときは0以外。

機能  : ファイルの名前を変更する。

remove

関数型 : int remove(const char *filename);

引数  : ファイル名

戻り値 : 成功した場合は0、失敗したときは0以外。

機能  : ファイルを削除する。

getchar

関数型 : int getchar(void);

戻り値 : 読み出した文字。失敗した場合はEOF。

機能  : 標準入力(キーボード)から1文字読み込む。

putchar

関数型 : int putchar(char c);

引数  : 文字

戻り値 : 出力文字。失敗したときはEOF。

機能  : 標準出力(ディスプレイ)に1文字書き込む。

gets

関数型 : char *gets(char *s);

引数  : 読み込んだ文字列を格納するバッファ

戻り値 : 引数で指定したバッファ。失敗したか終わりに到達した場合はNULL。

機能  : 標準入力(キーボード)から1行読み出す。結果に改行は含まれない。

注意  : バッファオーバーラン(ウイルス侵入)の原因になるので使ってはいけない。

puts

関数型 : int puts(const char *s);

引数  : 文字列

戻り値 : 成功した場合は0、失敗したときは0以外。

機能  : 標準出力(ディスプレイ)に1行書き込む。改行されます。

perror

関数型 : void perror(const char *s);

引数  : 表示する文字列

機能  : 指定した文字列と一緒に直前に発生したエラーを表示する。

printf

関数型 : int printf(const char *format, …);

引数  : 書式付き文字列、可変個の変数

戻り値 : 出力文字数。失敗したときは-1。

機能  : 標準出力(ディスプレイ)に書式付き文字列を書き込む。

scanf

関数型 : int scanf(const char *format, …);

引数  : 変換指定文字列、可変個のバッファ

戻り値 : 変換に成功した数。失敗した場合は-1。

機能  : 標準入力(キーボード)から文字列を読み込み指定された形式に変換する。

注意  : 他の入力関数と一緒に使うと思わぬ動作をすることがある。

 汎用 <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) *1; が定番である。

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

関数型 : 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を返します。

文字処理 <ctype.h>



半角文字1文字を取り扱う関数群。

マクロとして実現されていることがほとんどである。

isalpha

関数型 : int isalpha(int c);

引数  : 文字

戻り値 : 文字がアルファベットなら0以外、異なる場合は0。

機能  : 文字がアルファベットか判定する。

isupper

関数型 : int isupper(int c);

引数  : 文字

戻り値 : 文字が英大文字なら0以外、異なる場合は0。

機能  : 文字が英大文字か判定する。

islower

関数型 : int islower(int c);

引数  : 文字

戻り値 : 文字が英小文字なら0以外、異なる場合は0。

機能  : 文字が英小文字か判定する。

isdigit

関数型 : int isdigit(int c);

引数  : 文字

戻り値 : 文字が数字なら0以外、異なる場合は0。

機能  : 文字が数字か判定する。

isspace

関数型 : int isspace(int c);

引数  : 文字

戻り値 : 文字が空白文字なら0以外、異なる場合は0。

機能  : 文字が空白文字か判定する。

isalnum

関数型 : int isalnum(int c);

引数  : 文字

戻り値 : 文字がアルファベットまたは数字なら0以外、異なる場合は0。

機能  : 文字がアルファベットまたは数字か判定する。

iscntrl

関数型 : int iscntrl(int c);

引数  : 文字

戻り値 : 文字がコントロール文字なら0以外、異なる場合は0。

機能  : 文字がコントロール文字か判定する。

isgraph

関数型 : int isgraph(int c);

引数  : 文字

戻り値 : 文字がスペース以外の印刷できる文字なら0以外、異なる場合は0。

機能  : 文字がスペース以外の印刷できる文字か判定する。

isprint

関数型 : int isprint(int c);

引数  : 文字

戻り値 : 文字が印刷できる文字なら0以外、異なる場合は0。

機能  : 文字が印刷できる文字か判定する。

ispunct

関数型 : int ispunct(int c);

引数  : 文字

戻り値 : 文字が区切り文字なら0以外、異なる場合は0。

機能  : 文字が区切り文字か判定する。

isxdigit

関数型 : int isxdigit(int c);

引数  : 文字

戻り値 : 文字が16進数用の文字なら0以外、異なる場合は0。

機能  : 文字が16進数用の文字か判定する。

文字列処理 <string.h>



主に文字列処理を行う関数群。

汎用のメモリ処理と共用できる関数も多い。

なお、半角文字を基準とするので、全角文字の処理には注意すること。

strcpy

関数型 : char *strcpy(char *s, const char *t);

引数  : 文字配列、文字列

戻り値 : 引数の文字配列をそのまま返す

機能  : 文字配列に文字列をコピーする。文字列の代入に使用する。

strncpy

関数型 :  char *strncpy(char *s, const char *t, size_t n);

引数  : 文字配列、文字列、最大コピー文字数

戻り値 : 引数の文字配列をそのまま返す。

機能  : 文字配列に指定文字数だけ文字列をコピーする。

注意  : 文字数が多い場合にはナル文字を付加しないので、

必ず、s[n] = ‘\0’; としてnull文字を付加して下さい。

strcat

関数型 : char *strcat(char *s, const char *t);

引数  : 文字配列、文字列

戻り値 : 引数の文字配列をそのまま返す

機能  : 文字配列の後ろに文字列をつなげる。

strncat

関数型 : char *strncat(char *s, const char *t, size_t n);

引数  : 文字配列、文字列、最大連結文字数

戻り値 : 引数の文字配列をそのまま返す。

機能  : 文字配列の後ろに指定文字数だけ文字列をつなげる。

strlen

関数型 : size_t strlen(const char *s);

引数  : 文字列

戻り値 : 文字列の長さ。ナル文字は含めない。

機能  : 文字列の長さを返す。

strcmp

関数型 : int strcmp(const char *s, const char *t);

引数  : 文字列1、文字列2

戻り値 : 文字列1が大きいときは正、同じ時は0、文字列2が大きいときは負。

機能  : 文字列1と文字列2を比較する。

strncmp

関数型 : int strncmp(const char *s, const char *t, size_t n);

引数  : 文字列1、文字列2、比較文字数

戻り値 : 文字列1が大きいときは正、同じ時は0、文字列2が大きいときは負。

機能  : 文字列を指定文字数だけ比較する。

strchr

関数型 : char *strchr(const char *s, int c);

引数  : 文字列、文字

戻り値 : 見つかった位置のアドレス、見つからない場合はNULL。

機能  : 文字列の先頭から文字を検索する。

strrchr

関数型 : char *strrchr(const char *s, int c);

引数  : 文字列、文字

戻り値 : 見つかった位置のアドレス、見つからない場合はNULL。

機能  : 文字列の後ろから文字を検索する。

strcspn

関数型 : size_t strcspn(const char *s, const char *t);

引数  : 対象文字列、検索文字列

戻り値 : 見つかった位置までの文字数。

機能  : 対象文字列の中から検索文字列に含まれる文字を検索する。

strspn

関数型 : size_t strspn(const char *s, const char *t);

引数  : 対象文字列、検索文字列

戻り値 : 見つからない位置までの文字数。

機能  : 対象文字列の中から検索文字列に含まれない文字を検索する。

strpbrk

関数型 : char *strpbrk(const char *s, const char *t);

引数  : 対象文字列、検索文字列

戻り値 : 見つかった最初の文字へのポインタ、見つからない場合はNULL。

機能  : 対象文字列の先頭から検索文字列に含まれる文字を検索する。

strstr

関数型 : char *strstr(const char *s, const char *t);

引数  : 対象文字列、検索文字列

戻り値 : 見つかった位置へのポインタ、見つからない場合はNULL。

機能  : 対象文字列から検索文字列を検索する。

strtok

関数型 : char *strtok(char *s, const char *t);

引数  : 文字配列、区切り文字列

戻り値 : 区切られた単語へのポインタ。見つからない場合はNULL。

機能  : 文字配列を、区切り文字列に含まれる文字がある位置で区切る。

文字配列をNULLにして呼び出すと次の単語を取得出来る。

strerror

関数型 : char *strerror(int n);

引数  : エラー番号

戻り値 : エラーメッセージが格納された配列。対応するエラーがないときは空文字列。

機能  : エラーメッセージを取得する。

注意  : 取得した配列の中身は書き換えないようにする。

memcpy

関数型 : void *memcpy(void *dest, const void *source, size_t count);

引数  : コピー先、コピー元、コピーサイズ

戻り値 : 引数のコピー先を返す

機能  : メモリ内容をコピーする。コピー領域が重なっているとうまくいかない。

memmove

関数型 : void *memmove(void *dest, const void *source, size_t count);

引数  : コピー先、コピー元、コピーサイズ

戻り値 : 引数のコピー先を返す

機能  : メモリ内容をコピーする。コピー領域が重なっていても問題ない。

補足  : move という名前だが、移動ではないので注意。

memset

関数型 : void *memset(void *addr, int byte, size_t count);

引数  : 配列、数値、代入サイズ

戻り値 : 引数の配列をそのまま返す

機能  : メモリ内容の指定サイズ分の要素全てに数値を代入。文字にも使用できる。

memcmp

関数型 : int memcmp(const void *addr1, const void *addr2, size_t n);

引数  : 配列1、配列2、比較サイズ

戻り値 : 配列1が大きいときは正、同じ時は0、配列2が大きいときは負。

機能  : メモリ同士を比較する。文字列の比較も出来る。

memchr

関数型 : void *memchr(const void *addr, int byte, size_t count);

引数  : 配列、1バイトの数値、検索するサイズ

戻り値 : 見つかった位置のアドレス、見つからない場合はNULL。

機能  : メモリ内から数値を検索する。1文字検索にも使える。

数学関数 <math.h>



基本的な数学関数群。

角度はラジアンで表されるので注意すること。

度からラジアンへの変換は次の通り。

ラジアン = (度 * 3.14159 / 180)

fabs

関数型 : double fabs(double x);

引数  : 実数値

戻り値 : 絶対値

機能  : 絶対値を計算する。

sqrt

関数型 : double sqrt(double x);

引数  : 任意の実数値

戻り値 : 平方根

機能  : 平方根を計算する

pow

関数型 : double pow(double x, double y);

引数  : 累乗される値、指数

戻り値 : x を y 乗した値

機能  : 累乗を求める。

fmod

関数型 : double fmod(double x, double y);

引数  : 割られる数、割る数

戻り値 : 余り

機能  : 実数値の余りを求める。

sin

関数型 : double sin(double x);

引数  : ラジアン単位の角度

戻り値 : サイン値

機能  : サインを計算する

cos

関数型 : double cos(double x);

引数  : ラジアン単位の角度

戻り値 : コサイン値

機能  : コサインを計算する

tan

関数型 : double tan(double x);

引数  : ラジアン単位の角度

戻り値 : タンジェント値

機能  : タンジェントを計算する

acos

関数型 : double acos(double x);

引数  : コサインの値

戻り値 : アークコサイン(ラジアン)値

機能  : アークコサインを計算する

asin

関数型 : double asin(double x);

引数  : サインの値

戻り値 : アークサイン(ラジアン)値

機能  : アークサインを計算する

atan

関数型 : double atan(double x);

引数  : タンジェントの値

戻り値 : アークタンジェント(ラジアン)値

機能  : アークタンジェントを計算する。

値は π÷2 の範囲となる。

atan2

関数型 : double atan2(double y, double x);

引数  : 縦の値、横の値

戻り値 : アークタンジェント(ラジアン)値

機能  : アークタンジェントを計算する。

値は π の範囲となり、引数xが0でも計算できる。

sinh

関数型 : double sinh(double x);

引数  : ラジアン単位の角度

戻り値 : ハイパボリックサイン値

機能  : ハイパボリックサイン値を計算する

(exp(x) – exp(-x)) / 2 と同じ。

cosh

関数型 : double cosh(double x);

引数  : ラジアン単位の角度

戻り値 : ハイパボリックコサイン値

機能  : ハイパボリックコサイン値を計算する

(exp(x) + exp(-x)) / 2 と同じ。

tanh

関数型 : double tanh(double x);

引数  : ラジアン単位の角度

戻り値 : ハイパボリックタンジェント値

機能  : ハイパボリックタンジェント値を計算する

sinh(x) / cosh(x) と同じ。

ceil

関数型 : double ceil(double x);

引数  : 任意の実数値

戻り値 : 入力値以上の整数値

機能  : 実数値を整数値に丸める。

floor

関数型 : double floor(double x);

引数  : 任意の実数値

戻り値 : 入力値以下の整数値

機能  : 実数値を整数値に丸める。

exp

関数型 : double exp(double x);

引数  : 実数値

戻り値 : 自然対数の底のx乗

機能  : 指数を計算する。

log

関数型 : double log(double x);

引数  : 任意の実数値

戻り値 : 自然対数値

機能  : 自然対数を求める。

log10

関数型 : double log10(double x);

引数  : 任意の実数値

戻り値 : 常用対数値

機能  : 常用対数を求める。

modf

関数型 : double modf(double x, double *ip);

引数  : 任意の実数値、返される整数部部分の値

戻り値 : 小数部分の値

機能  : 実数値を整数部分と小数部分に分ける。

frexp

関数型 : double frexp(double x, int *p);

引数  : 任意の実数値、返される指数部分の値

戻り値 : 仮数部分の値

機能  : 浮動小数点値の指数部と仮数部を求める

ldexp

関数型 : double ldexp(double x, int p);

引数  : 仮数部、指数部

戻り値 : 合成された浮動小数点値

機能  : 仮数部と指数部から浮動小数点値を求める。

時間 <time.h>



時刻を取り扱う関数群。これらの関数はUNIXの慣習から

世界協定時刻(UTC)における 1970年1月1日0時0分0秒 を基準としている。

今後、説明文中では 1970年1月1日0時0分0秒 を 基準時刻 と表記する。

time

関数型 : time_t time(time_t *t);

引数  : 時刻を格納する変数のアドレス

戻り値 : 基準時刻からの経過秒数

機能  : 現在の時刻を基準時刻からの経過秒数で返す。

補足  : 引数を NULL で呼び出して戻り値だけを取得できる。

: 環境によっては秒以外の単位を使うこともあります。

clock

関数型 : clock_t clock(void);

引数  : なし

戻り値 : 使用プロセス時間

機能  : プログラムが使用したプロセス時間を返す。

補足  : clock() / CLOCKS_PER_SEC とすることで秒単位の値を得られる。

注意  : マルチスレッド環境では経過時刻と一致しない。

difftime

関数型 : double difftime(time_t t1, time_t t2);

引数  : 基準時刻からの経過秒数1、基準時刻からの経過秒数2

戻り値 : 2つの経過秒数の差

機能  : 時刻の引き算をする

: 環境によっては秒以外の単位を使うこともあります。

localtime

関数型 : struct tm *localtime(const time_t *t);

引数  : 基準時刻からの経過秒数

戻り値 : 秒数を国内時刻情報に変換した構造体

機能  : 基準時刻からの経過秒数を国内時刻に変換する。

注意  : 戻り値はシステム全体で共有されたメモリ領域なので、

必ず、別途宣言した構造体にコピーしておく必要がある。

gmtime

関数型 : struct tm *gmtime(const time_t *t);

引数  : 基準時刻からの経過秒数

戻り値 : 秒数を国際時刻情報に変換した構造体

機能  : 基準時刻からの経過秒数を国際時刻に変換する。

注意  : 戻り値はシステム全体で共有されたメモリ領域なので、

必ず、別途宣言した構造体にコピーしておく必要がある。

asctime

関数型 : char *asctime(const struct tm *tm);

引数  : 時刻を格納した構造体

戻り値 : 時刻を変換した文字列の先頭アドレス

機能  : 時刻を Wed Feb 17 20:14:04 1988 のような文字列に変換する。

注意  : 戻り値はシステム全体で共有されたメモリ領域なので、

必ず、別途宣言した構造体にコピーしておく必要がある。

ctime

関数型 : char *ctime(const time_t *t);

引数  : 基準時刻からの経過秒数

戻り値 : 時刻を変換した文字列の先頭アドレス

機能  : 時刻を Wed Feb 17 20:14:04 1988 のような文字列に変換する。

注意  : 戻り値はシステム全体で共有されたメモリ領域なので、

必ず、別途宣言した構造体にコピーしておく必要がある。

strftime

関数型 : size_t strftime(char *s,  size_t smax, const char *fmt, const struct tm *tp);

引数  : 文字配列、文字配列のサイズ、時刻書式指定文字列、時刻を格納した構造体

戻り値 : 配列に書き込まれた文字数。失敗した場合は0。

機能  : 時刻を指定された書式通りに文字列に変換する。

制御 <assert.h> <signal.h> <setjmp.h>



主にプログラムの制御を行う関数群。

なお、これらはそれぞれヘッダーファイルが異なる。

<assert.h> を必要とする関数群

assert

関数型 : void assert(int expression);

引数  : 診断する変数値

戻り値 : なし

機能  : デバッグのために診断を行う。

補足  : 引数に設定された値が0の場合、

実行中のソースファイル名と行番号を表示して急性終了します。

NDEBUG定数を定義しておくとコンパイルの段階で取り除かれます。

<signal.h> を必要とする関数群

raise

関数型 : int raise(int sig);

引数  : 送信するシグナル値

戻り値 : 成功した場合は0、失敗した場合は0以外。

機能  : プログラムにシグナルを送信する。

signal

関数型 : void (*signal(int sig, void (*handler)()))();

引数  : 設定するシグナル値、シグナルを処理する関数のアドレス

戻り値 : 以前に設定されていた関数のアドレス、失敗した場合はSIG_ERR。

機能  : シグナルを処理する関数を設定する。

<setjmp.h> を必要とする関数群

setjmp

関数型 : int setjmp(jmp_buf env);

引数  : ジャンプ先の状態を格納する変数のアドレス

戻り値 : 最初に呼ばれたときは0、longjmpで戻ったときはその値。

機能  : longjmp関数に備えて状態を保存する。

注意  : プログラムの流れをグチャグチャにする凶悪な関数であり、

よほどの事情でもない限り使用してはいけない。

longjmp

関数型 : void longjmp(jmp_buf env, int val);

引数  : ジャンプ先の状態が格納された変数のアドレス、任意の戻り値

戻り値 : なし

機能  : 関数間をまたぐ広域ジャンプを行う

注意  : プログラムの流れをグチャグチャにする凶悪な関数であり、

よほどの事情でもない限り使用してはいけない。

srand

関数型 : void srand(unsigned int seed);

引数  : 乱数系列の初期値。

機能  : 乱数系列の初期値を与える。

使用法 : srand((unsigned int)time(0