| cppreference.com -> その他の標準 C 関数 -> 詳細 |
#include <stdlib.h> void abort( void ); |
abort()は現在のプログラムを強制終了させる関数である。 実装依存であるが、実行失敗を表す値を返値として返す。
関連トピック:#include <assert.h> void assert( int 式 ); |
assert()マクロはエラーをテストするために使用される。式 を評価してゼロになった場合には、assert()はその情報をSTDERRに書き出してプログラムを終了する。 もしNDEBUGというマクロが定義されていれば、assert()マクロはすべて無視される。
関連トピック:#include <stdlib.h> int atexit( void (*関数)(void) ); |
atexit()は関数 をプログラム終了時に呼び出すように登録する関数である。atexit()は多くの場合は32回まで、複数回呼ぶことができる。登録した関数は登録したのと逆順に呼び出される。atexit()の返値は成功した場合にはゼロ、そうでない場合にはそれ以外の値が返される。
関連トピック:#include <stdlib.h> void *bsearch( const void *キー, const void *配列, size_t 要素数, size_t 大きさ, int (*比較関数)(const void *, const void *) ); |
bsearch()は配列[0] から配列[要素数-1] を二分検索し、キー と一致した要素のポインタを返す関数である。比較関数 は最初の引数が次の引数よりも小さかった場合には負の値を、等しかった場合にはゼロを、大きかった場合には正の値を返す関数でなければならない。配列 は昇順に並んでいる必要がある。返値はマッチした要素のポインタであり、見つからなかった場合にはNULLが返される。
関連トピック:#include <stdlib.h> void exit( int 終了コード ); |
exit()関数はプログラムを終了させる。終了コードは プログラムの返値として渡される。通常、プログラムの正常終了では0を返し、そうでない場合にはそれ以外の値を返す。
関連トピック:#include <stdlib.h> char *getenv( const char *名前 ); |
getenv()は名前に関連づけられた環境変数の情報を返す関数である。名前に関連づけられた情報が存在しなければNULLが返される。
関連トピック:#include <setjmp.h> void longjmp( jmp_buf 環境バッファ, int 状態 ); |
longjmp()は最後にsetjmp()が呼ばれた位置のコードから実行を開始する。環境バッファ はsetjmp() を呼んだときにセットされる。状態 はsetjmp()の返値になり、どこのlongjump()から飛んできたのかを判断するために使用することができる。状態 はゼロに設定してはならない。
関連トピック:#include <stdlib.h> void *qsort( void *配列, size_t 要素数, size_t 大きさ, int (*比較関数)(const void *, const void *) ); |
bsearch()は配列[0] から配列[要素数-1] をクイックソートする関数である。各要素の大きさは大きさ である。比較関数 は最初の引数が次の引数よりも小さかった場合には負の値を、等しかった場合にはゼロを、大きかった場合には正の値を返す関数でなければならない。qsort()は配列 を昇順に並びかえる。
関連トピック:
bsearch().
#include <signal.h> int raise( int シグナル ); |
raise()はシグナル をプログラムに送信する関数である。シグナルには以下の種類がある:
| シグナル | 意味 |
| SIGABRT | プログラムを終了させるエラー |
| SIGFPE | 浮動小数点数エラー |
| SIGILL | 不正命令 |
| SIGINT | ユーザがCTRL-Cを押した |
| SIGSEGV | 不正メモリアクセス |
| SIGTERM | プログラム終了 |
成功時の返値はゼロ、失敗時はゼロ以外の値を返す。
関連トピック:#include <stdlib.h> int rand( void ); |
rand()はゼロとRAND_MAXの間の乱数を返す関数である。サンプル:
srand( time(NULL) );
for( i = 0; i < 10; i++ )
printf( "乱数 #%d: %d\n", i, rand() );
関連トピック:#include <setjmp.h> int setjmp( jmp_buf 環境バッファ ); |
setjmp()関数はlongjmp()を実行するために、システムのスタック情報を環境バッファ に保存する関数である。最初にsetjmp()を実行するときには返値はゼロである。その後、longjmp()が呼ばれた場合には、longjmp()の2番目の引数がsetjmp()の返値として返される。longjmp()の説明も参照のこと。
関連トピック:#include <signal.h> void ( *signal( int シグナル, void (* 関数) (int)) ) (int); |
signal()は、プログラム内でシグナル を受信したときに呼び出される関数 を登録する関数である。関数 はカスタムシグナルハンドラで、以下のマクロがsignal.hに登録されている。
| マクロ | 説明 |
| SIG_DFL | デフォルトシグナルハンドラ |
| SIG_IGN | シグナルを無視する |
signal()の返値は以前登録されていたシグナルハンドラである。エラー発生時はSIG_ERRになる。
#include <stdlib.h> void srand( unsigned 種 ); |
srand()はrand()が使用する乱数生成器の種を設定するのに使用する。
srand( time(NULL) );
for( i = 0; i < 10; i++ )
printf( "乱数 #%d: %d\n", i, rand() );
関連トピック:#include <stdlib.h> int system( const char *コマンド ); |
system()はコマンド をシステムコールとして実行する関数である。プログラムを実行してエラーがなかったときは返値がゼロになる。コマンド にNULLを指定した場合にはコマンドインタプリタが使用できるかどうかをテストすることができる。ゼロでない値が返ってきた場合には使用可能であり、そうでない場合にはゼロが返ってくる。
関連トピック:#include <stdarg.h> type va_arg( va_list 引数ポインタ, タイプ ); void va_end( va_list 引数ポインタ ); void va_start( va_list 引数ポインタ, 最後のパラメータ ); |
va_arg()は可変長引数を扱うためのマクロである。
int sum( int, ... );
int main( void ) {
int answer = sum( 4, 4, 3, 2, 1 );
printf( "答えは %d\n", answer );
return( 0 );
}
int sum( int num, ... ) {
int answer = 0;
va_list argptr;
va_start( argptr, num );
for( ; num > 0; num-- )
answer += va_arg( argptr, int );
va_end( argptr );
return( answer );
}
このコードは4+3+2+1の答えとして10が表示される。