gpt4 book ai didi

c - 使用switch语句和scanf()函数的C语言多选菜单程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:55 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com