正如标题所示,我尝试过两种方式制作一种交互式菜单:一种是循环,另一种是递归函数。无论哪种方式都会产生相同的行为,也就是说,它“将”我的第一个输入“视为”在调用时应该询问的时间。
为了更好地解释它,这是代码:
#include <stdio.h>
void goback(int *flag)
{
char selector;
printf("Do you want to return to menu?\n1. Yes\n2. No\n");
selector=getchar();
printf("\n");
switch(selector)
{
case '1':
break;
case '2':
*flag=1;
break;
default:
printf("Invalid input!\n\n");
goback(flag);
}
}
int main()
{
char select;
int flag=0;
do
{
printf("Main menu\n\n");
printf("1. A\n2. Exit\n\n");
scanf("%c", &select);
switch(select)
{
case '1':
//execute code here and ask the user if they want to go back
//to the main menu
goback(&flag);
break;
case '2':
break;
default:
printf("Invalid input option!\n\n");
}
}while(select!='2' && flag==0);
return 0;
}
如果用户输入无效选项,那么 这两个函数中的任何一个都会将输出的消息作为输出,然后再进行第二次迭代;当它被称为函数时,它为什么需要先前的输入?