Namespaces
Variants

atoi, atol, atoll

From cppreference.net
< c ‎ | string ‎ | byte
定義先ヘッダ <stdlib.h>
int atoi ( const char * str ) ;
(1)
long atol ( const char * str ) ;
(2)
long long atoll ( const char * str ) ;
(3) (C99以降)

str が指すバイト文字列内の整数値を解釈します。暗黙の基数は常に 10 です。

空白文字が最初の非空白文字が見つかるまで破棄され、その後、有効な整数数値表現を形成するために可能な限り多くの文字を取り、それらを整数値に変換します。有効な整数値は以下の部分で構成されます:

  • (optional) プラスまたはマイナス記号
  • 数値の桁

結果の値が表現できない場合、すなわち変換された値が対応する戻り値の型の範囲から外れる場合、動作は未定義です。

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - HTMLタグ、属性、クラス名はすべて保持されています - C++関連の用語(Parameters、Return value、Exampleなど)は翻訳せずに保持されています - 番号付けと構造は完全に保持されています - リンク先(href属性)も変更していません

パラメータ

str - 解釈対象のヌル終端バイト文字列へのポインタ

戻り値

成功時の str の内容に対応する整数値。

変換が実行できない場合、 0 が返されます。

注記

この名前は「ASCIIから整数へ」を意味します。

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("%i\n", atoi(" -123junk"));
    printf("%i\n", atoi(" +321dust"));
    printf("%i\n", atoi("0"));
    printf("%i\n", atoi("0042")); // 先頭のゼロを持つ10進数として扱われる
    printf("%i\n", atoi("0x2A")); // 先頭のゼロのみが変換され、"x2A"は破棄される
    printf("%i\n", atoi("junk")); // 変換を実行できない
    printf("%i\n", atoi("2147483648")); // UB: intの範囲外
}

出力例:

-123
321
0
42
0
0
-2147483648

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.22.1.2 atoi、atol、およびatoll関数 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.22.1.2 atoi、atol、atoll関数 (p: 249)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.22.1.2 atoi、atol、およびatoll関数 (p: 341)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.20.1.2 atoi、atol、およびatoll関数 (p: 307)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.10.1.2 atoi関数
  • 4.10.1.3 atol関数

関連項目

バイト文字列を整数値に変換する
(関数)
バイト文字列を符号なし整数値に変換する
(関数)
(C95) (C99)
ワイド文字列を整数値に変換する
(関数)
(C95) (C99)
ワイド文字列を符号なし整数値に変換する
(関数)
C++ documentation for atoi , atol , atoll