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関数

概要 逆余弦の主値を求める。
ヘッダ math.h
形式 double acos(double x);
引数 x 余弦値。
戻り値 引数x の逆余弦の主値。
詳細 結果は、0〜πの範囲のラジアン値になる。
注意 引数x の値が -1.0〜1.0 の範囲に収まっていない場合、定義域エラーとなる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	double f = -1.0;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "acos(%f) == %f\n", f, acos(f) );
		f += 0.25;
	}

	return 0;
}

実行結果:

acos(-1.000000) == 3.141593
acos(-0.750000) == 2.418858
acos(-0.500000) == 2.094395
acos(-0.250000) == 1.823477
acos(0.000000) == 1.570796
acos(0.250000) == 1.318116
acos(0.500000) == 1.047198
acos(0.750000) == 0.722734
acos(1.000000) == 0.000000
関連 余弦は cos関数で求められる。
C99 では、float型版の acosf関数、long double型版の acosl関数が追加されている。
解説章

acosf関数

概要 逆余弦の主値を求める。
ヘッダ math.h
形式 float acosf(float x);
引数 x 余弦値。
戻り値 引数x の逆余弦の主値。
詳細 結果は、0〜πの範囲のラジアン値になる。
注意 引数x の値が -1.0〜1.0 の範囲に収まっていない場合、定義域エラーとなる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	float f = -1.0f;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "acos(%f) == %f\n", f, acosf(f) );
		f += 0.25f;
	}

	return 0;
}

実行結果:

acos(-1.000000) == 3.141593
acos(-0.750000) == 2.418858
acos(-0.500000) == 2.094395
acos(-0.250000) == 1.823477
acos(0.000000) == 1.570796
acos(0.250000) == 1.318116
acos(0.500000) == 1.047198
acos(0.750000) == 0.722734
acos(1.000000) == 0.000000
関連 double型版の acos関数、long double型版の acosl関数がある。
余弦は cosf関数で求められる。
解説章

acosl関数

概要 逆余弦の主値を求める。
ヘッダ math.h
形式 long double acosl(long double x);
引数 x 余弦値。
戻り値 引数x の逆余弦の主値。
詳細 結果は、0〜πの範囲のラジアン値になる。
注意 引数x の値が -1.0〜1.0 の範囲に収まっていない場合、定義域エラーとなる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	long double f = -1.0L;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "acos(%Lf) == %Lf\n", f, acosl(f) );
		f += 0.25L;
	}

	return 0;
}

実行結果:

acos(-1.000000) == 3.141593
acos(-0.750000) == 2.418858
acos(-0.500000) == 2.094395
acos(-0.250000) == 1.823477
acos(0.000000) == 1.570796
acos(0.250000) == 1.318116
acos(0.500000) == 1.047198
acos(0.750000) == 0.722734
acos(1.000000) == 0.000000
関連 float型版の acosf関数、double型版の acos関数がある。
余弦は cosl関数で求められる。
解説章

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関数

概要 逆正弦の主値を求める。
ヘッダ math.h
形式 double asin(double x);
引数 x 正弦値。
戻り値 引数x の逆正弦の主値。
詳細 結果は、-π/2 から π/2 の範囲のラジアン値になる。
注意 引数x の値が -1.0〜1.0 の範囲に収まっていない場合、定義域エラーとなる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	double f = -1.0;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "asin(%f) == %f\n", f, asin(f) );
		f += 0.25;
	}

	return 0;
}

実行結果:

asin(-1.000000) == -1.570796
asin(-0.750000) == -0.848062
asin(-0.500000) == -0.523599
asin(-0.250000) == -0.252680
asin(0.000000) == 0.000000
asin(0.250000) == 0.252680
asin(0.500000) == 0.523599
asin(0.750000) == 0.848062
asin(1.000000) == 1.570796
関連 正弦は sin関数で求められる。
C99 では、float型版の asinf関数、long double型版の asinl関数が追加されている。
解説章

asinf関数

概要 逆正弦の主値を求める。
ヘッダ math.h
形式 float asinf(float x);
引数 x 正弦値。
戻り値 引数x の逆正弦の主値。
詳細 結果は、-π/2 から π/2 の範囲のラジアン値になる。
注意 引数x の値が -1.0〜1.0 の範囲に収まっていない場合、定義域エラーとなる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	float f = -1.0f;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "asin(%f) == %f\n", f, asinf(f) );
		f += 0.25f;
	}

	return 0;
}

実行結果:

asin(-1.000000) == -1.570796
asin(-0.750000) == -0.848062
asin(-0.500000) == -0.523599
asin(-0.250000) == -0.252680
asin(0.000000) == 0.000000
asin(0.250000) == 0.252680
asin(0.500000) == 0.523599
asin(0.750000) == 0.848062
asin(1.000000) == 1.570796
関連 double型版の asin関数、long double型版の asinl関数がある。
正弦は sinf関数で求められる。
解説章

asinl関数

概要 逆正弦の主値を求める。
ヘッダ math.h
形式 long double asinl(long double x);
引数 x 正弦値。
戻り値 引数x の逆正弦の主値。
詳細 結果は、-π/2 から π/2 の範囲のラジアン値になる。
注意 引数x の値が -1.0〜1.0 の範囲に収まっていない場合、定義域エラーとなる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	long double f = -1.0L;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "asin(%Lf) == %Lf\n", f, asinl(f) );
		f += 0.25L;
	}

	return 0;
}

実行結果:

asin(-1.000000) == -1.570796
asin(-0.750000) == -0.848062
asin(-0.500000) == -0.523599
asin(-0.250000) == -0.252680
asin(0.000000) == 0.000000
asin(0.250000) == 0.252680
asin(0.500000) == 0.523599
asin(0.750000) == 0.848062
asin(1.000000) == 1.570796
関連 float型版の asinf関数、double型版の asin関数がある。
正弦は sinl関数で求められる。
解説章

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関数

概要 逆正接の主値を求める。
ヘッダ math.h
形式 double atan(double x);
引数 x 逆正接。
戻り値 引数x の逆正接の主値。
詳細 結果は、-π/2 から π/2 の範囲のラジアン値になる。
注意
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	double f = -1.0;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "atan(%f) == %f\n", f, atan(f) );
		f += 0.25;
	}

	return 0;
}

実行結果:

atan(-1.000000) == -0.785398
atan(-0.750000) == -0.643501
atan(-0.500000) == -0.463648
atan(-0.250000) == -0.244979
atan(0.000000) == 0.000000
atan(0.250000) == 0.244979
atan(0.500000) == 0.463648
atan(0.750000) == 0.643501
atan(1.000000) == 0.785398
関連 正接は tan関数で求められる。 また、y/x の逆正接を求める atan2関数がある。
C99 では、float型版の atanf関数、long double型版の atanl関数が追加されている。
解説章

atanf関数

概要 逆正接の主値を求める。
ヘッダ math.h
形式 float atanf(float x);
引数 x 逆正接。
戻り値 引数x の逆正接の主値。
詳細 結果は、-π/2 から π/2 の範囲のラジアン値になる。
注意
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	float f = -1.0f;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "atan(%f) == %f\n", f, atanf(f) );
		f += 0.25f;
	}

	return 0;
}

実行結果:

atan(-1.000000) == -0.785398
atan(-0.750000) == -0.643501
atan(-0.500000) == -0.463648
atan(-0.250000) == -0.244979
atan(0.000000) == 0.000000
atan(0.250000) == 0.244979
atan(0.500000) == 0.463648
atan(0.750000) == 0.643501
atan(1.000000) == 0.785398
関連 double型版の atan関数、long double型版の atanl関数がある。
正接は tanf関数で求められる。 また、y/x の逆正接を求める atan2f関数がある。
解説章

atanl関数

概要 逆正接の主値を求める。
ヘッダ math.h
形式 long double atanl(long double x);
引数 x 逆正接。
戻り値 引数x の逆正接の主値。
詳細 結果は、-π/2 から π/2 の範囲のラジアン値になる。
注意
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	long double f = -1.0L;
	int i;

	for( i = 0; i < 9; ++i ){
		printf( "atan(%Lf) == %Lf\n", f, atanl(f) );
		f += 0.25L;
	}

	return 0;
}

実行結果:

atan(-1.000000) == -0.785398
atan(-0.750000) == -0.643501
atan(-0.500000) == -0.463648
atan(-0.250000) == -0.244979
atan(0.000000) == 0.000000
atan(0.250000) == 0.244979
atan(0.500000) == 0.463648
atan(0.750000) == 0.643501
atan(1.000000) == 0.785398
関連 float型版の atanf関数、double型版の atan関数がある。
正接は tanl関数で求められる。 また、y/x の逆正接を求める atan2l関数がある。
解説章

atan2関数

概要 y/x の逆正接の主値を求める。
ヘッダ math.h
形式 double atan2(double y, double x);
引数 y 正接の分子。
x 正接の分母。
戻り値 引数y / 引数x の逆正接の主値。
詳細 結果は、-π〜π の範囲のラジアン値になる。 引数x、y の符号に応じて象限が決定される。
注意 引数x、y がいずれも 0 の場合、定義域エラーになる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	double x, y;
	int i, j;

	x = -1.0;
	for( i = 0; i < 5; ++i ){

		y = -1.0;
		for( j = 0; j < 5; ++j ){
			printf( "atan2(%4.1f, %4.1f) == %f\n", y, x, atan2(y, x) );
			y += 0.5;
		}

		x += 0.5;
	}

	return 0;
}

実行結果:

atan2(-1.0, -1.0) == -2.356194
atan2(-0.5, -1.0) == -2.677945
atan2( 0.0, -1.0) == 3.141593
atan2( 0.5, -1.0) == 2.677945
atan2( 1.0, -1.0) == 2.356194
atan2(-1.0, -0.5) == -2.034444
atan2(-0.5, -0.5) == -2.356194
atan2( 0.0, -0.5) == 3.141593
atan2( 0.5, -0.5) == 2.356194
atan2( 1.0, -0.5) == 2.034444
atan2(-1.0,  0.0) == -1.570796
atan2(-0.5,  0.0) == -1.570796
atan2( 0.0,  0.0) == 0.000000
atan2( 0.5,  0.0) == 1.570796
atan2( 1.0,  0.0) == 1.570796
atan2(-1.0,  0.5) == -1.107149
atan2(-0.5,  0.5) == -0.785398
atan2( 0.0,  0.5) == 0.000000
atan2( 0.5,  0.5) == 0.785398
atan2( 1.0,  0.5) == 1.107149
atan2(-1.0,  1.0) == -0.785398
atan2(-0.5,  1.0) == -0.463648
atan2( 0.0,  1.0) == 0.000000
atan2( 0.5,  1.0) == 0.463648
atan2( 1.0,  1.0) == 0.785398
関連 単一の値から逆正接を求める atan関数がある。
C99 では、float型版の atan2f関数、long double型版の atan2l関数が追加されている。
解説章

atan2f関数

概要 y/x の逆正接の主値を求める。
ヘッダ math.h
形式 float atan2f(float y, float x);
引数 y 正接の分子。
x 正接の分母。
戻り値 引数y / 引数x の逆正接の主値。
詳細 結果は、-π〜π の範囲のラジアン値になる。 引数x、y の符号に応じて象限が決定される。
注意 引数x、y がいずれも 0 の場合、定義域エラーになる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	float x, y;
	int i, j;

	x = -1.0f;
	for( i = 0; i < 5; ++i ){

		y = -1.0f;
		for( j = 0; j < 5; ++j ){
			printf( "atan2(%4.1f, %4.1f) == %f\n", y, x, atan2f(y, x) );
			y += 0.5f;
		}

		x += 0.5f;
	}

	return 0;
}

実行結果:

atan2(-1.0, -1.0) == -2.356194
atan2(-0.5, -1.0) == -2.677945
atan2( 0.0, -1.0) == 3.141593
atan2( 0.5, -1.0) == 2.677945
atan2( 1.0, -1.0) == 2.356194
atan2(-1.0, -0.5) == -2.034444
atan2(-0.5, -0.5) == -2.356194
atan2( 0.0, -0.5) == 3.141593
atan2( 0.5, -0.5) == 2.356194
atan2( 1.0, -0.5) == 2.034444
atan2(-1.0,  0.0) == -1.570796
atan2(-0.5,  0.0) == -1.570796
atan2( 0.0,  0.0) == 0.000000
atan2( 0.5,  0.0) == 1.570796
atan2( 1.0,  0.0) == 1.570796
atan2(-1.0,  0.5) == -1.107149
atan2(-0.5,  0.5) == -0.785398
atan2( 0.0,  0.5) == 0.000000
atan2( 0.5,  0.5) == 0.785398
atan2( 1.0,  0.5) == 1.107149
atan2(-1.0,  1.0) == -0.785398
atan2(-0.5,  1.0) == -0.463648
atan2( 0.0,  1.0) == 0.000000
atan2( 0.5,  1.0) == 0.463648
atan2( 1.0,  1.0) == 0.785398
関連 double型版の atan2関数、long double型版の atan2l関数がある。
単一の値から逆正接を求める atanf関数がある。
解説章

atan2l関数

概要 y/x の逆正接の主値を求める。
ヘッダ math.h
形式 long double atan2l(long double y, long double x);
引数 y 正接の分子。
x 正接の分母。
戻り値 引数y / 引数x の逆正接の主値。
詳細 結果は、-π〜π の範囲のラジアン値になる。 引数x、y の符号に応じて象限が決定される。
注意 引数x、y がいずれも 0 の場合、定義域エラーになる。
使用例
#include <stdio.h>
#include <math.h>

int main(void)
{
	long double x, y;
	int i, j;

	x = -1.0L;
	for( i = 0; i < 5; ++i ){

		y = -1.0L;
		for( j = 0; j < 5; ++j ){
			printf( "atan2(%4.1Lf, %4.1Lf) == %Lf\n", y, x, atan2l(y, x) );
			y += 0.5L;
		}

		x += 0.5L;
	}

	return 0;
}

実行結果:

atan2(-1.0, -1.0) == -2.356194
atan2(-0.5, -1.0) == -2.677945
atan2( 0.0, -1.0) == 3.141593
atan2( 0.5, -1.0) == 2.677945
atan2( 1.0, -1.0) == 2.356194
atan2(-1.0, -0.5) == -2.034444
atan2(-0.5, -0.5) == -2.356194
atan2( 0.0, -0.5) == 3.141593
atan2( 0.5, -0.5) == 2.356194
atan2( 1.0, -0.5) == 2.034444
atan2(-1.0,  0.0) == -1.570796
atan2(-0.5,  0.0) == -1.570796
atan2( 0.0,  0.0) == 0.000000
atan2( 0.5,  0.0) == 1.570796
atan2( 1.0,  0.0) == 1.570796
atan2(-1.0,  0.5) == -1.107149
atan2(-0.5,  0.5) == -0.785398
atan2( 0.0,  0.5) == 0.000000
atan2( 0.5,  0.5) == 0.785398
atan2( 1.0,  0.5) == 1.107149
atan2(-1.0,  1.0) == -0.785398
atan2(-0.5,  1.0) == -0.463648
atan2( 0.0,  1.0) == 0.000000
atan2( 0.5,  1.0) == 0.463648
atan2( 1.0,  1.0) == 0.785398
関連 float型版の atan2f関数、double型版の atan2関数がある。
単一の値から逆正接を求める atanl関数がある。
解説章

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関数がある。
解説章

参考リンク

Cクイックリファレンス 第2版
 -- C11対応のリファレンス。
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル 第5版
 -- C99 まで網羅した最も詳細なリファレンス。
新ANSI C言語辞典
 -- 標準ライブラリについて詳しい。C99 には非対応。

更新履歴

'2017/4/30 acos関数、acosf関数、acosl関数、asin関数、asinf関数、asinl関数、 atan関数、atanf関数、atanl関数、atan2関数、atan2f関数、atan2l関数の説明を追加。

'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 のトップページへ