C言語編 リファレンス

標準ライブラリ 「A」

「A」で始まる標準ライブラリ関数及び、その他の定義です。

abort関数

概要 プログラムを異常終了させる。
必要なヘッダファイル stdlib.h
形式 void abort(void);
引数 なし
戻り値 なし
詳細 SIGABRT というシグナルを発生させている。 このシグナルが、signal関数によって補足されるため、補足後の処理内容によっては、即座にプログラムが終了しないかも知れない。
注意 開いていたストリームの扱いや、tmpfile関数で作成した一時ファイルが削除されるかどうかは未定義。
使用例
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	puts( "aaaaa" );

	abort();

	puts( "bbbbb" );

	return 0;
}

実行結果:

aaaaa
関連 プログラムを正常な動機で終了させたい場合には、exit関数を使う。
assertマクロの条件式を評価した結果が偽になったとき、abort関数が呼び出されている。
本編で解説している章

abs関数

概要 絶対値を返す。
必要なヘッダファイル stdlib.h
形式 int abs(int i);
引数 i 絶対値を求める対象の値。
戻り値 引数i の絶対値。
詳細
注意 結果が表現できない場合の動作は未定義。
使用例
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	printf( "%d\n", abs(7) );
	printf( "%d\n", abs(-7) );
	printf( "%d\n", abs(0) );

	return 0;
}

実行結果:

7
7
0
関連 引数と戻り値の型が異なるタイプが幾つか存在する。
labs関数は long int型、llabs関数は long long int型を扱うが、後者は C99 から追加された。
また、double型を扱う fabs関数、float型を扱う fabsf関数、 long double型を扱う fabsl関数があるが、後ろの 2つは C99 から追加されたものである。 なお、これら浮動小数点数の型を扱うタイプは、stdlib.h ではなく、math.h に定義されている。
また、C99 で追加された intmax_t型の値に対して絶対値を求める imaxabs関数がある。
本編で解説している章

acos関数

acosf関数

acosl関数

asctime関数

概要 カレンダー時間を文字列化する。
必要なヘッダファイル time.h
形式 char* asctime(const struct tm* t);
引数 t 日時の情報を格納した tm構造体へのポインタ。
戻り値 引数t が指す日時を文字列化した配列のアドレス。
詳細 tm構造体の内容に応じて、それを文字列に整形する。
注意 戻り値が返すアドレスは、標準ライブラリ内のどこかにある配列のものであり、 この配列は他の関数の呼び出しによって上書きされることがある。 具体的には、次回の asctime関数や ctime関数の呼び出し時に上書きされる可能性がある。 そのため、あとで結果を使う場合は、コピーを取っておくべきである。
使用例
#include <stdio.h>
#include <time.h>

int main(void)
{
	struct tm* utc;
	time_t t;
	
	t = time( NULL );
	utc = gmtime( &t );

	puts( asctime( utc ) );
	
	return 0;
}

実行結果:

Sun Apr 03 04:07:27 2011
関連 変換前の形式が time_t型である場合は、ctime関数を使える。
本編で解説している章 第51章

asin関数

asinf関数

asinl関数

assertマクロ

概要 一定の条件式を満たしていることを確認する。
必要なヘッダファイル assert.h
形式 #ifdef NDEBUG
#define assert(expr) ((void)0)
#else
#define assert(expr) ((expr) ? (void)0 : __assert(#expr, __FILE__, __LINE__))
#endif
置換結果 NDEBUGマクロが定義されている場合には、空の式に置換される。
NDEBUGマクロが未定義であれば、条件式を判定し、真であれば空の式になる。 偽であれば、その旨を表す処理系定義の文字列を標準エラー出力した後、abort関数を呼び出す。
詳細 ほぼ、上記の「置換結果」に書いた通りである。
出力されるメッセージには、指定した条件式を文字列化したもの、assertマクロを呼び出した個所のソースファイル名、行数が含まれる。 ただし、書式については処理系依存である。C99 の場合、さらに呼び出した個所の関数名が出力される。
注意
使用例
#include <stdio.h>
#include <assert.h>

void myputs(const char* str);

int main(void)
{
	myputs( "abcde" );
	myputs( "" );
	myputs( NULL );

	return 0;
}

void myputs(const char* str)
{
	assert( str != NULL );
	puts( str );
}

実行結果:

abcde

関連
本編で解説している章 第28章

atan関数

atanf関数

atanl関数

atan2関数

atan2f関数

atan2l関数

atexit関数

概要 プログラムの正常終了時に呼び出される関数を登録する。
必要なヘッダファイル stdlib.h
形式 int atexit(void (*func)(void));
引数 func 登録する関数。
戻り値 登録に成功すると 0 が返される。失敗した場合は 0以外が返される。
詳細 通常の処理の流れで、main関数を抜け出してプログラムが終了した場合や、 exit関数によって正常終了された場合に、呼び出される関数を登録する。
関数は複数登録でき、最後に登録したものから順番に呼び出される。 登録できる関数の個数の制限は、環境によって異なるが、最低でも 32個は登録できることになっている。
注意 abort関数によるプログラム終了の場合は、異常終了となるので、 atexit関数で登録した関数は呼び出されることはない。
登録した関数内から、更に exit関数が呼び出される場合の挙動は未定義である。
使用例
#include <stdio.h>
#include <stdlib.h>

void onExit1(void);
void onExit2(void);

int main(void)
{
	atexit( onExit1 );
	atexit( onExit2 );

	return 0;
}

void onExit1(void)
{
	puts( "onExit1" );
}

void onExit2(void)
{
	puts( "onExit2" );
}

実行結果:

onExit2
onExit1
関連
本編で解説している章

atof関数

概要 文字列を double型に変換する。
必要なヘッダファイル stdlib.h
形式 double atof(const char* str);
引数 str 変換対象の文字列。
戻り値 変換結果。
ただし、変換不可能な場合の結果は未定義。
詳細 引数str の先頭から調べ、浮動小数点数として認識可能な部分を、double型に変換して返す。 先頭部分にある空白文字については無視される。
注意 変換不可能な場合の結果が未定義なので、エラーが起こりうるような使い方はしてはならない。 そのような事情があるため、strtod関数を使う方が良い。
使用例
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	printf( "%f\n", atof("123.45abc") );

	return 0;
}

実行結果:

123.450000
関連 int型に変換する atoi関数、long int型に変換する atol関数がある。 また、C99 では long long int型へ変換する atoll関数が追加された。
float型へ変換する同種の標準関数は存在しないが、C99 では、代わりに strtof関数を使うのが良い。
本編で解説している章

atoi関数

概要 文字列を int型に変換する。
必要なヘッダファイル stdlib.h
形式 int atoi(const char* str);
引数 str 変換対象の文字列。
戻り値 変換結果。
ただし、変換不可能な場合の結果は未定義。
詳細 引数str の先頭から調べ、整数として認識可能な部分を、int型に変換して返す。 先頭部分にある空白文字については無視される。
注意 変換不可能な場合の結果が未定義なので、エラーが起こりうるような使い方はしてはならない。 そのような事情があるため、strtol関数を使う方が良い。
使用例
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	printf( "%d\n", atoi("12345abc") );

	return 0;
}

実行結果:

12345
関連 long int型に変換する atol関数、double型に変換する atof関数がある。 また、C99 では long long int型へ変換する atoll関数が追加された。
本編で解説している章 第45章

atol関数

概要 文字列を long int型に変換する。
必要なヘッダファイル stdlib.h
形式 long int atol(const char* str);
引数 str 変換対象の文字列。
戻り値 変換結果。
ただし、変換不可能な場合の結果は未定義。
詳細 引数str の先頭から調べ、整数として認識可能な部分を、long int型に変換して返す。 先頭部分にある空白文字については無視される。
注意 変換不可能な場合の結果が未定義なので、エラーが起こりうるような使い方はしてはならない。 そのような事情があるため、strtol関数を使う方が良い。
使用例
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	printf( "%ld\n", atol("12345abc") );

	return 0;
}

実行結果:

12345
関連 int型に変換する atoi関数、double型に変換する atof関数がある。 また、C99 では long long int型へ変換する atoll関数が追加された。
本編で解説している章

atoll関数

概要 文字列を long long int型に変換する。
必要なヘッダファイル stdlib.h
形式 long long int atoll(const char* str);
引数 str 変換対象の文字列。
戻り値 変換結果。
ただし、変換不可能な場合の結果は未定義。
詳細 引数str の先頭から調べ、整数として認識可能な部分を、long long int型に変換して返す。 先頭部分にある空白文字については無視される。
注意 変換不可能な場合の結果が未定義なので、エラーが起こりうるような使い方はしてはならない。 そのような事情があるため、strtoll関数を使う方が良い。
使用例
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	printf( "%lld\n", atoll("12345abc") );

	return 0;
}

実行結果:

12345
関連 int型に変換する atoi関数、long型に変換する atol関数、double型に変換する atof関数がある。
本編で解説している章

参考リンク

更新履歴

'2017/3/5 atoll関数の説明を追加。

'2011/4/9 asctime関数の説明を追加。

'2011/2/11 atof関数、atoi関数、atol関数の説明を追加。

'2010/9/4 atexit関数の説明を追加。

'2009/11/21 abort関数、assertマクロの説明を追加。

'2009/8/20 abs関数の説明を追加。

'2009/7/25 新規作成。



リファレンスのトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ