我写的小游戏在上一个场景中可能会有过多的按键事件,导致进入下一个场景后这些按键仍然被获取并处理。我希望在切换到下个场景时将缓冲区内的按键都清空。
我搜索到了 fflush(stdin); 语句,但是貌似并没有用。以下是我的测试代码:
// win10 + vs2019
//
#include <easyx.h>
#include <stdio.h>
#include <conio.h>
int main()
{
while (true)
{
printf("_kbhit() == %d\n", _kbhit());
if (_kbhit())
{
// 清空键盘缓冲区(无效)
fflush(stdin);
}
Sleep(1000);
}
return 0;
}
上面的代码执行以后,_kbhit() 返回 0,按任意键后,_kbhit() 会一直返回 1,表示键盘缓冲区里面还有按键,可见 fflush(stdin) 并没有清空键盘缓冲区。
请问有什么办法可以清空键盘缓冲区吗?