当按键按下后,显示的都是有按键值,虽然已经不再继续按键 ,这是为什么??

如果使用scanf()时输入异常,可以用fflush(stdin)先将输入缓存清除再重新输入,如:
while(scanf("%d", &a) != 1){
fflush(stdin);
}
但是用bioskey(1),kbhit(),却不能使用fflush(stdin)清除原来的键值。当按下按键时,如果键值没有被其他函数如getch()接收,则再次用bioskey(1),kbhit()返回的值仍然表示为有按键按下代码如下:  
while(1)
{
printf("bioskey(1) = %d\n", bioskey(1));
fflush(stdin);
sleep(2);
}

跃然一笑
浏览 104回答 1
1回答

沧海一幻觉

不是一个系统的。 scanf, printf , fflush之类的属于buffed io,这是比较高级的一套东西。 而 kbhit, getch什么的是更底层的输入方式, 不通过scanf用的这个buffer的,所以 fflush对这个也没什么用
打开App,查看更多内容
随时随地看视频慕课网APP