stdin から入力された文字をカウントするプログラムを C で作成しました。ループを使用して複数のエントリを許可したかったのです。(注:私はプログラミングが初めてです。)
main()
{
long nc;
int c;
int kc=1;
for (kc=1;kc<=5;kc=kc+1)
{
nc=0;
c= getchar();
while(c != '0')
{
++nc;
c=getchar();
}
printf("%1d\n",nc);
}
return 0;
}
基本的に、ご想像のとおり、ループは 5 つのエントリを受け入れます。
問題:Sky0
最初の結果を入力すると、3 で問題ありません。しかし、それ以降、カウントに 1 が追加されます。つまり、結果を入力dame0
すると、結果がカウントされ5
、sit0
結果がカウントされます4
。
さまざまな段階で prinf を使用して問題をデバッグしようとしているときに、最初の結果の後にコードが入力の終わりを見つけた後、コードは決して for ループに入り、 as0
で次のエントリを待機することに気付きました。これにより、対応する出力でエラーが発生します。nc
1
どこが間違っているのか教えてください。そして、センシング後もループに入るのはなぜ0
ですか?
あなたの助けと時間を大いに感謝します:)