Если scanf
не может прочитать значение (например, потому что вы сказали ему прочитать int
и дали ему письмо), оно не изменит вашу переменную. Так что nDisplaySchedule_Choice
не изменится так, как вы можете проверить в switch
. По крайней мере, если вы не инициализируете его - вы можете установить для него значение, которое не охватывается вашим switch
, и если оно не изменилось, вы знаете, что scanf
не удалось прочитать значение.
Или вы можете проверить возвращаемое значение scanf
, чтобы увидеть, удалось ли ему прочитать значение:
int result = scanf("%d", &nDisplaySchedule_Choice);
if (result == 0) {
int c;
while ((c = getchar()) != '\n' && c != EOF); // flush the invalid input
printf("ERROR. INPUT A VALID RESPONSE.\n\n");
DisplaySchedule();
}
else switch ...