我测试了getch和getchar,但是它正在等待输入,我认为必须有一个函数来读取键盘缓冲区。我代码的一部分
while (1) {
if (key!='r')
{
if (key!='q')
{
mvprintw(LINES-2, 1, "Display will refresh in %2d seconds", t);
refresh();
sleep(1);
t--;
break;
}
else
{
exit (0);
}
}
else
{
return;
}
}发布于 2012-02-09 09:36:46
如果不希望getch()等待,则必须使用nodelay()将其设置为非阻塞。
执行后:
if (nodelay (pWin, 1) == ERR) {
// some error occurred.
}如果没有可用的输入,getch()将返回ERR。
输入选项的主页是这里,getch的行为在这里和它自己的手册中都提到了,即链接这里。
int nodelay(WINDOW *win, bool bf);nodelay选项导致getch是非阻塞调用.如果没有准备好输入,getch将返回ERR。如果禁用(bf为FALSE),则getch等待直到按下键。
窗口参数是要在其上执行此设置的curses窗口。
在无延迟模式下,如果没有等待输入,则返回值
ERR.
https://stackoverflow.com/questions/9208296
复制相似问题