ごく普通のナル終端文字列 "123" を整数値の 123 に変換するとき、あなたはどんな方法を用いるでしょうか? 学校の課題でもないかぎり、1文字ずつ取り出して数字かどうかを判別し、数字なら取り出した文字から '0' を引いた値を元の値に 10 倍したものに加えていく...といった処理をわざわざ書くことはないでしょう(組込み用途のフリースタンディング処理系やライブラリ自体の開発の場合は別ですが)。 上記のような変換を行う場合、atoi 関数を使っていることが少なくないと思います。しかし、本当にそれでよいのでしょうか? atoi というのは、元の文字列が正しい書式で、しかもオーバーフローが起きない場合にのみ正しく動作します。そうでない場合、エラー検出を行うことがまったくできません。特に、オーバーフロー発生時には未定義の動作を引き起こします。こんな危険な関数を使ってよいはずがありません。 この