Atoi

atoi (ASCII to Integer) は、文字列を整数型に変換するC言語標準Cライブラリの関数。標準ヘッダーファイル <stdlib.h> で宣言されている。読み方は規格では特に定められていない。

概要

引数で与えられた文字列を解析し、文字列先頭の連続する10進数整数部分をint型の整数に変換する。例えば、引数に"123abc"を与えると戻り値として123を返し、"-5"なら-5を返す。"abc"""空文字列)など変換不可能な文字列の場合、0を返す。

変換された後の数値がintの範囲に収まらない(結果がintで表現できない)場合、C99やC11の仕様上は未定義動作 (undefined behavior) を引き起こす[1][2][注釈 1]。また、変換に失敗してもerrnoを書き換えないかもしれない。このため、atoiの使用を禁止しているガイドラインも存在する[3]

正常に変換可能な文字列の場合は (int)strtol(s, NULL, 10) と同じ結果を返す。

形式

#include <stdlib.h>
int atoi(const char *nptr);

脚注

注釈

  1. ^ strtolに関しては、変換された後の正しい値がlongの範囲に収まらない場合、正の符号のときはLONG_MAXを、負の符号のときはLONG_MINを返すと規定されている(算術オーバーフローの未定義動作は起こさない)。一方、atoiに関しては、intの範囲に収まらない場合であってもINT_MAXINT_MINを返すとは限らない。

出典

  1. ^ ISO/IEC 9899:1999 / §7.20.1 Numeric conversion functions
  2. ^ ISO/IEC 9899:201x Programming languages — C / §7.22.1 Numeric conversion functions
  3. ^ INT06-C. 文字列トークンを整数に変換するには strtol() 系の関数を使う

関連項目

ウィキブックスにC言語関連の解説書・教科書があります。

外部リンク

  • K&R
  • ANSI C
    • C89
    • C90
  • C99
  • C11
  • C17(英語版)
  • C2x(英語版)
  • Embedded C(英語版)
  • MISRA C
Cの機能
  • 関数
  • ヘッダファイル
  • 演算子
  • 文字列(英語版)
  • 文法(英語版)
  • プリプロセッサ(英語版)
  • データ型(英語版)
  • キーワード
  • フリースタンディング環境
  • 標準Cライブラリの関数
    • ctype.h(英語版)
    • stdio.h
    • math.h(英語版)
    • stdlib.h(英語版)
    • string.h(英語版)
    • time.h
    • stdarg.h(英語版)
    • POSIXライブラリ(英語版)
    標準Cライブラリ
    コンパイラ
    統合開発環境
    派生言語
    関連項目
    • カテゴリ カテゴリ
    • 表示
    • 編集