我正在写一个简单的程序,开始在按键上运行。
它将首先打印一条消息,然后提示用户按一个键开始该过程。
第一次按键可以是任意键(包括ESC),并提示程序循环一次。然后它会提示用户按另一个键。如果按下ESC,程序退出。否则程序将继续循环。
在C中实现这一目标的最简单方法是什么?到目前为止,我只能在按下ESC时退出程序,无论是否是第一个提示。
这是我到目前为止的一般结构,抱歉,如果我的格式很糟糕:
while(1)
{
if(kbhit())
{
do
{
//bunch of code//
iKeyPress = getch();
} while (iKeyPress != 27);
}
}
无论我按什么,新的迭代似乎都没有结束。
答案 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。