私は非常に単純なコード セグメントを持っています。ここには、次のようなスイッチ ケースを含む do while ループがあります。
do {
printf("Enter Choice\n");
scanf("%d", &choice);
switch(choice) {
case 1: printf("1 selected");
break;
case 2: printf("exit");
break;
default: printf("wrong input");
break;
}
} while (choice != 2);
このコードでは、誤って数字の代わりに文字を入力すると、プログラムは無期限にループし、入力さえ受け付けません。挿入すればこれを修正できることを知っています
if(isdigit(choice))
スイッチケースに入る前。しかし、私の質問は、そもそもなぜそれが起こるのかということです。
デフォルトのケースに移動して、再度入力を求めるべきではありませんか?