Hi All,
I have a menu-based UI where the user inputs a number 0-3, to choose from the options. I'm trying to figure out a way to guard against a user inputting a completely erroneous value (for example 'd' '*' '$' 'q' 'B') -- basically any number that's not between 0-3 (inclusive). I thought the 'default' statement within my switch-statement would guard against any value that isn't 0-3 (erroneous), and then that would break the do-while loop, however that's not what happens. What happens when a user inputs an erroneous value is that it puts the do-while loop into an infinite loop. How can I guard against a user from inputting an erroneous value that will gracefully exit the program? Maybe I'll need an if-statement right after my scanf() statement? Any thoughts would be greatly appreciated! Thanks.
I have a menu-based UI where the user inputs a number 0-3, to choose from the options. I'm trying to figure out a way to guard against a user inputting a completely erroneous value (for example 'd' '*' '$' 'q' 'B') -- basically any number that's not between 0-3 (inclusive). I thought the 'default' statement within my switch-statement would guard against any value that isn't 0-3 (erroneous), and then that would break the do-while loop, however that's not what happens. What happens when a user inputs an erroneous value is that it puts the do-while loop into an infinite loop. How can I guard against a user from inputting an erroneous value that will gracefully exit the program? Maybe I'll need an if-statement right after my scanf() statement? Any thoughts would be greatly appreciated! Thanks.
int main()
{
unsigned short int user_input;
do{
printf(" Press 0 for Jupiter\n\n");
printf(" Press 1 for Earth\n\n");
printf(" Press 2 for Mars\n\n");
printf(" Press 3 for Venus\n\n");
printf(" --> Any key other than '0'-'3' To Exit Console Application <-- \n\n");
printf("\n\nEnter your choice here --> ");
scanf("%hu", &user_input); // %hu scans for an unsigned short
// you can put an if-statement exit(1) as an ungraceful exit for invalid input values
switch(user_input)
{
case 0:
printf("\nHello Jupiter!\n");
break;
case 1:
printf("\nHello Earth!\n");
break;
case 2:
printf("\nHello Mars!\n");
break;
case 3:
printf("\Hello Venus!\n");
break;
default:
printf("\nWe never reach this.\n\n");
break;
}
} while((user_input >= 0) && user_input <= 3);
return 0;
}