Here's one way to get bulletproof menus with scanf
Code:
#include <stdio.h>
int main(void)
{
int option;
while (1)
{
int rc;
printf("1. Option 1\n2. Option 2\n3. Option 3\n");
printf("Select an option (ctrl+z to quit): ");
fflush(stdout);
rc = scanf("%1d", &option);
if (rc == EOF)
break;
scanf("%*[^\n]");
getchar();
if (rc < 1)
{
fprintf(stderr, "Bad input, try again...\n");
continue;
}
switch (option)
{
case 1:
printf("Option 1\n");
break;
case 2:
printf("Option 2\n");
break;
case 3:
printf("Option 3\n");
break;
default:
fprintf(stderr, "Invalid option\n");
break;
}
}
return 0;
}