如果使用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对这个也没什么用
- 1 回答
- 0 关注
- 103 浏览
添加回答
举报
0/150
提交
取消
