私は1から2を入力して答えから選ぶことができるいくつかのCコードを書いています。また、高い数字を入力すると別の数字を選ぶことができます。しかし、文字列や文字のような数値や数値ではないものを入力しようとすると、一番下のエラーメッセージが無限に繰り返されます。他の文字を入力したときに1または2より大きい数字を入力した場合と同じように、コードを同じように動作させるにはどうすればよいですか?ここで私は抽象化された使用コード:このCコードループの作成を中止するにはどうすればよいですか?
#include <stdio.h>
int a;
int main(){
b:scanf("%d", &a);
if(a==1)
{
a=0;
}
if(a==2)
{
a=0;
}
else
{
a=0;
printf("\nERROR: Please try again.\n\n");
goto b;
}
}
EDIT:どうやら戻り値がまだ(scanf関数でスタックしている)、それはそれに戻ります。返り値のscanf()をどうやって取り除くことができますか?
私はこの代わりに、GOTOSのために 'while'ループを使用すると思います。その後、ループからちょうど '中断 'したり、ループを続けるかどうかを決めるフラグを設定したりします。 gotosの正当なユースケースは正当なものよりもはるかに少ないです。 – Carcigenicate
ああ...後藤。ヤック遅すぎる前にこれを行う*正しい方法を学んでください。 –
'fgets'で入力を取得し、入力文字列に' sscanf'を使用すると、ユーザが必要なものを入力しなかった場合、以前の入力文字列を忘れて、やり直すことができます。 OTOH 'scanf'を使うと、拒否された入力はすべて入力バッファに残ります。 **常に**関数の 'scanf'ファミリからの戻り値をチェックします(それが何を意味するのかはmanページを参照してください)。入力データが* nice *であると決して決してしないでください。 –