我正在尝试使用 C 中的 switch 语句编写一个带有选择菜单的程序。这是我的代码:
main ()
{
char option;
int test;
start:
printf ("Enter: ");
scanf ("%c", &option);
while (getchar() != '\n');
switch (option)
{
case '1':
printf ("Test 1 : ");
scanf ("%d", &test);
break;
case '2':
printf ("Test 2 : ");
break;
}
if (option != 'q') goto start;
}
该程序旨在重复,直到从键盘输入“q”字符。问题是每当我第一次尝试从键盘输入“1”(执行案例 1)时,下次我输入“1”或“2”时,程序将跳过案例 1(或 2)并继续直接进入下一个循环,但是在下一个循环之后它正常执行案例 1(或 2)。此外,案例 2(没有 scanf () 函数)一切正常。我还尝试从案例 1 中删除 scanf,然后案例 1 正常执行。下面是一些输出:
Enter: 1
Test 1 : 5
Enter: 1
Enter: 1
Test 1 : 7
Enter: 2
Enter: 2
Test 2 :
Enter: 2
Test 2 :
任何人都可以向我解释我的代码有什么问题并告诉我如何修复它吗?
最佳答案
使用循环代替 goto
-
while(option!='q'){
printf ("Enter: ");
if(scanf (" %c", &option)==1){ // leave a space before %c and check return of scanf
//while (getchar() != '\n');
switch (option)
{
case '1':
printf ("Test 1 : ");
scanf ("%d", &test);
break;
case '2':
printf ("Test 2 : ");
break;
}
}
}
关于c - 使用switch语句和scanf()函数的C语言多选菜单程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33170752/