我刚刚开始学习C.我有一个打印菜单的程序,让用户一步一步地选择做什么。现在我想在用户输入空行时返回主菜单,但我该怎么做呢?
我想我可以创建一个函数将程序返回到主菜单,但何时调用该函数?我知道每当我scanf
某事时......或者
我已经习惯了OO世界,所以对我来说这有点陌生,请帮忙:))
答案 0 :(得分:1)
如果您正在采取以下措施:
printf("0) do something\n");
printf("1) do something else\n");
printf("enter) main menu\n");
...然后scanf真的不是你的朋友。
你可以这样做:
char buf[80];
int choice;
printf(menu_text);
fgets(buf, 80, stdin);
if(strlen(buf))
{
sscanf(buf, "%d", &choice);
switch(choice)
{
case 0:
/* etc */
break;
case 1:
/* etc */
break;
}
}
else
{
go_back_to_main_menu();
}
答案 1 :(得分:1)
这取决于用户是通过发送字符串还是单个字符/按键进行通信。
如果按字符串进行通信,请尝试以:
开头char buffer[MAX_BUF_LEN];
char* pBuffer = buffer;
scanf("%s%*c",pBuffer);
if (strlen(pBuffer) == 0)
goto_main_menu();
else
process_user_input(pBuffer);
如果按字符/按键进行通信,请尝试从:
开始int inkey = getchar();
if (inkey == '\n')
goto_main_menu();
else
process_user_input(inkey);
在scanf
之后使用“if / else”完全有效。在使用之前,应检查并验证用户发送的任何内容。
答案 2 :(得分:1)
我猜你正在使用switch语句来过滤输入,所以只需为'\ n'或换行符字符选项输出打印菜单。
答案 3 :(得分:0)
C语言不是OO世界,所以我会说坚持使用if-else。无论如何,在创建文本菜单时,通常会得到if-else的switch(user_choice)
。
您需要scanf()
的帮助吗?