当用户输入空行时做一些特别的事

时间:2010-03-16 16:32:32

标签: c function

我刚刚开始学习C.我有一个打印菜单的程序,让用户一步一步地选择做什么。现在我想在用户输入空行时返回主菜单,但我该怎么做呢? 我想我可以创建一个函数将程序返回到主菜单,但何时调用该函数?我知道每当我scanf某事时......或者

,放一个if-else是不好的

我已经习惯了OO世界,所以对我来说这有点陌生,请帮忙:))

4 个答案:

答案 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()的帮助吗?