How do I keep re-asking the user to enter a valid input that is an integer? I know how to validate an integer range input, but I don't know how to validate a non-integer input when prompted to enter an integer in C.
#include <stdio.h>
int main() {
int menu;
while(true) {
printf("Choose a menu (1-4):\n");
do {
scanf("%d", &menu);
} while(menu < 1 || menu > 4);
if(menu == 1) {
printf("menu 1\n");
} else if(menu == 2) {
printf("menu 2\n");
} else if(menu == 3) {
printf("menu 3\n");
} else if(menu == 4) {
printf("menu 4, exit\n");
break;
}
}
return 0;
}
Any help would be appreciated, I'm sorry if this is a duplicate as everytime I try to search the solution, it's on another language or the thread is asking "how to validate integer input range" instead of non-integer input.
scanf(). If it is EOF, there won't be any more input. If it is zero, then what's waiting in the input can't be interpreted as a number. You need to read past the next character, possibly up until the next newline (int c; while ((c = getchar()) != EOF && c != '\n') ;).