C言語関係掲示板

過去ログ

No.11. getcharで数字の入力


int N;
scanf( "%d" , &N );

とすれば、Nに入力した数字、たとえば12345がはいりますが、
これと同等の動作をするgetcharのプログラムを作りたいです。

int N,c;
while( ( c = getchar() ) != '\n' ){
if ( c >= '0' && c <= '9' ){
N = N + ( c - '0' );
}
}

これだと12345と入力した際には、15がはいってしまいます。
1*10^4+2*10^3+3*10^2+4*10^1+5*10^0を計算すれば良いのですが、123と入力した際には、1*10^2+2*10^1+3*10^0を計算しないといけません。
とても困っています。配列は使用してはいけないみたいです。
(なぜなら授業でif,for,while,getchar,switchくらいしか教わってないから…)


N = N * 10 + ( c - '0' );
にするといいんじゃあないでしょうか。
あと、Nは最初に0で初期化しておいてくださいね。


0で初期化で思い出しましたが、
static int N; なんてstatic宣言すると
初めから0で初期化されます。

まあ、あまり乱用するようなものじゃないでしょうけど、
12−2.記憶クラスの種類では書いてなかったっす。


ともじさん、shuさん、ありがとうございます。
プログラムってセンスが必要ですね。
奥の深さも感じます。
あとクセ(?)というものも理解する必要がありますね。
これからも精進して良いプログラムを送り出せるようにがんばります。


12−2.記憶クラスの種類
に変数の初期化について追記しました。
でも、個人的には明示的な初期化が欲しいです。

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.7.25
Copyright(c) 2000-2002 TOMOJI All Rights Reserved