好的,它现在可以正确循环,但是当你给它一个输入时,例如'2' 它只是转到默认情况。
print_Menu() {
while ( 1 )
{
printf("=============================================\n");
printf("MENU\n");
printf("=============================================\n");
printf("1. Do stuff\n2. Do more stuff\n3. Do even more stuff\n4. Quit\n");
printf("Choose an option: ");
scanf(" %s*", &selection);
switch (selection) {
case 1:
/*do your thing for option 1*/
printf("thing 1\n");
break;
case 2:
/*do your thing for option 2*/
printf("thing 2\n");
break;
case 3:
/*do your thing for option 3*/
printf("thing 3\n");
break;
case 4:
/*do your thing for option 3*/
printf("quiting app\n");
exit(0);
break;
default:
printf(" Invalid selection\n");
// print_Menu();
break;
}
}
最佳答案
只需添加
scanf("%*s");
在 default
情况下,从输入缓冲区中清除无效字符。*
告诉 scanf
扫描字符串并然后丢弃它。
scanf
无法获取整数并在您输入除整数以外的任何其他内容时返回 0。此数据不会被 scanf
使用,因此保留在 stdin
中。第二次调用 scanf
时,它会看到您之前输入的字符然后再次无法读取整数。这将导致无限循环
关于C程序,切换菜单死循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946408/