文字列を整数型に変換する

atoi、atof、_atoi64、atol

【書式】

double atof( const char *string );
int atoi( const char *string );
__int64 _atoi64( const char *string );
long atol( const char *string );

【引数】

string 変換する文字列

【戻り値】

成功時 入力された文字を数字として解釈し、生成したdouble、int、_int64、long 整数値を返します。
入力がその型の値に変換できないときは、戻り値として、0(atoi関数と_atoi64関数)、 0L(atol関数)、または0.0(atof関数)を返します。
失敗時 オーバーフローが発生したときの戻り値は未定義です。

【機能】

文字列を倍精度浮動小数点値[double](atof 関数)、整数値[int](atoi関数)、 または long整数値[long int](atol関数と_atoi64関数)に変換します。
入力は、指定された型の数値として解釈できる文字列です。 出力は、実行時のロケールの LC_NUMERIC カテゴリの設定に影響されます。 LC_NUMERIC カテゴリの詳細については、setlocale関数を参照してください。 atof関数で処理できる文字列のサイズは、100文字に制限されています。 この関数は、数の一部として認識できない文字を最初に読み込んだ時点で、 入力文字列の読み込みを停止します。文字列を終了するNULL文字('\0')に遭遇した場合も停止します。

【インクルードファイル】

atoi、_atoi64、atol関数関数 stdlib.h
atof関数関数 math.hstdlib.h

【必要追加ライブラリ】

なし

使用例

〈サンプルプログラム〉

/*
 * atof、atoi、atolの各関数を使って、
 * 文字列として格納されている数を数値に変換します。
 */

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    char *s;
    double x;
    int i;
    long l;

    s = "  -2309.12E-15";    /* atof のテスト */
    x = atof(s);
    printf("atof 関数のテスト: 文字列: %s\t浮動小数点値: %e\n", s, x);

    s = "7.8912654773d210";  /* atof のテスト */
    x = atof(s);
    printf("atof 関数のテスト: 文字列: %s\t浮動小数点値: %e\n", s, x);

    s = "  -9885 pigs";      /* atoi のテスト */
    i = atoi(s);
    printf("atoi 関数のテスト: 文字列: %s\t\t整数値      : %d\n", s, i);

    s = "98854 dollars";     /* atol のテスト */
    l = atol(s);
    printf("atol 関数のテスト: 文字列: %s\tlong整数値  : %ld\n", s, l);

    return 0;
}

〈出力〉

atof 関数のテスト: 文字列:   -2309.12E-15    浮動小数点値: -2.309120e-012
atof 関数のテスト: 文字列: 7.8912654773d210  浮動小数点値: 7.891265e+210
atoi 関数のテスト: 文字列:   -9885 pigs      整数値      : -9885
atol 関数のテスト: 文字列: 98854 dollars     long整数値  : 98854