У меня есть очень простой сегмент кода, в котором есть цикл 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))
прежде чем попасть в корпус переключателя. Но мой вопрос в том, почему это происходит в первую очередь.
Разве он не должен перейти к регистру по умолчанию и снова запросить ввод?