为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
跃然一笑 2022-12-22 17:13:53
如果使用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);}
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

不是一个系统的。 scanf, printf , fflush之类的属于buffed io,这是比较高级的一套东西。 而 kbhit, getch什么的是更底层的输入方式, 不通过scanf用的这个buffer的,所以 fflush对这个也没什么用

查看完整回答
反对 回复 2022-12-25
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号