好吧它现在循环正确但是当你给它一个输入时,例如' 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;
}
}
答案 0 :(得分:3)
添加
scanf("%*s");
在default
情况下清除输入缓冲区中的无效字符。*
告诉scanf
扫描字符串然后丢弃它。
scanf
无法获得整数,并且当您输入除整数之外的任何其他内容时返回0。 scanf
不会消耗此数据,因此保留在stdin
中。当第二次调用scanf
时,它会看到您之前再次键入的字符无法读取整数。这将导致无限循环
答案 1 :(得分:0)
if(1!=scanf("%d", &selection)){
while(getchar() != '\n');
selection = -1;
}