c-如何使用ncurses清除getch()的缓冲区



我有这样的东西:

keypad(stdscr, TRUE);
nodelay(stdscr, TRUE);
char key;
while(1)
{
usleep(80000);
// ...Program related code...
// Key Listener
key = getch();
switch (key)
{
case 'a':
// a related code
break;
case 'b':
// b related code
break;
}
}

然而,我注意到了一些奇怪的行为,如果我以足够快的速度(比节拍速率快(按下ab键,它们似乎会被getch((缓冲,就像接下来的每一次节拍一样,程序将继续处理这些ab按压,直到缓冲区赶上为止。因此,如果您按住其中一个键,那么在您松开该键很长一段时间后,它将继续由getch((处理。

我只想在每个刻度上对一个键进行采样和处理。我不希望getch异步缓冲按键。有没有办法清除缓冲区,或者禁用getch的额外缓冲区,使其只存储最后一个按下的字符?

您似乎在寻找int flushinp(void)

最新更新