如何区分C中的第一个按键和后续按键

时间:2015-10-31 04:59:28

标签: c

我正在写一个简单的程序,开始在按键上运行。

它将首先打印一条消息,然后提示用户按一个键开始该过程。

第一次按键可以是任意键(包括ESC),并提示程序循环一次。然后它会提示用户按另一个键。如果按下ESC,程序退出。否则程序将继续循环。

在C中实现这一目标的最简单方法是什么?到目前为止,我只能在按下ESC时退出程序,无论是否是第一个提示。

这是我到目前为止的一般结构,抱歉,如果我的格式很糟糕:

while(1)
{
    if(kbhit())
    {
        do 
        {
        //bunch of code//
        iKeyPress = getch();
        } while (iKeyPress != 27);
    }
}

无论我按什么,新的迭代似乎都没有结束。

2 个答案:

答案 0 :(得分:0)

试试这个:

{
     getchar();  //first input
     char ch;
     do {      // will work first time irrespective of what you press        
              /*
              * rest of code
              */
              ch = getch();

        } while (ch != 27);

return 0;
}

编辑: 你的代码dosnt似乎工作了,因为你有2个循环,外部循环总是如此,所以如果你设法退出内循环,外循环再次迭代。

如果外环很重要,只需使用:

While(1)
{
    if(kbhit())
    {
       do {
              //bunch of code//
              iKeyPress = getch();
          } while (iKeyPress != 27);

         if(ikeyPress == 27 ) return 1;  //

    //rest of code
    }
}

答案 1 :(得分:0)

您可以跟踪 ESC 被按下的次数。例如:

int    esc_press_count    = 0;

while (esc_press_count < 2)
{
    if(kbhit())
    {
        do 
        {
        //bunch of code//
        iKeyPress = getch();
        } while (iKeyPress != 27);

        ++esc_press_count;
        if (esc_press_count < 2)
        {
            // Prompt for second ESC.
        }
    }
}

无论您是等待第二个ESC还是继续循环,第二个ESC都将退出该程序,因为esc_press_count < 2将为false。