第9章 演習問題2 ~関数atoiを作ってみる~
問題・関数atoiと同じ機能を持つ、関数a2iを作る。
関数atoiは、文字列を引数にもらい、その整数値を戻り値に返す関数です。
戻り値の返し方は、前の章でやりましたね。
そして、char配列(文字列)を引数にする方法も、前の章にありました。
しかし、それだけでは、まだまだ難しいことでしょう。
関数a2iは、次の説明を良く理解してから、作り始めてください。
実は、一つのchar型変数は、int型の変数やlong型の変数と同じように、比較や四則演算が出来ます。
char型も本来は、整数型の仲間だからです。箱の中には文字が入ってるように思えていたのも、
ただ単に-128から127までの数字のどれかが入っているだけだったのです
(注24)。
ただそれを画面に表示する際、出力形式を%cと指定すると、
数字に対応した文字に置き換わってくれていただけなのです。
試しにprintf(“%c”, 97);を実行してみると、よく分かるはずです。
ただの数字の97が、aと表示されたはずです
(注25)。
ちなみに、’0’ は48、’1’ は49になります。
ということは、’1’ -‘0’とすると、ただの整数の1が取り出せるということです。
この原理を用いて、文字を整数に代えていって下さい
(’2’、’3’、’4’ も、同様に、50、51、52と連続していますので、
’1’ 以外でも大丈夫です)。
また、本物の関数atoiは、文字列の中に数字以外の文字を見つけたら、それまでの値を返します。
例: "1234a6789" → 1234、 "abcd7777" → 0
つまり、関数a2iも同様に、0~9以外の文字が出てくるまで処理を続ければいいということです。
ヒントは、ここまでです。それでは、頑張って下さい。
自分なりにできたと思ったら、まず、入念にテストをしてみて下さい。
配属後に、自分で何らかの関数を作ったら、まず、きちんと動くかテストすることが大事です。
テストした上で、正常に動いているならば、講師の人に見てもらって下さい。
最後に、次ページの解答例に目を通して下さい。