第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以外の文字が出てくるまで処理を続ければいいということです。

 ヒントは、ここまでです。それでは、頑張って下さい。

 自分なりにできたと思ったら、まず、入念にテストをしてみて下さい。 配属後に、自分で何らかの関数を作ったら、まず、きちんと動くかテストすることが大事です。 テストした上で、正常に動いているならば、講師の人に見てもらって下さい。

 最後に、次ページの解答例に目を通して下さい。

< 前のページへ
お問い合わせ
  • ようかん
  • SG Labs(エスジー ラボ)
  • ITERACY
  • RiceLog(ライスログ)
  • Salesforce導入コンサルティング
  • SES営業向け用語講座

Pagetop