解决gcc编译后fflush失效
本文最后更新于:4 个月前
保留现场
使用scanf()
获取输入时,因为涉及键盘缓冲区的问题,每次输入后想要把缓冲清空,但是在gcc编译后,使用fflush
无法清空缓冲区。
探究原因
C标准(ISO/IEC 9899:1999 standard)规定fflush(stdin)
操作是未定义的<参看《ISO/IEC 9899:1999 standard》p270>;。也就是说不一定能实现刷新功能,但有的编译器可能不遵循标准,对fflush(stdin)
操作不予警告,并且有时可能产生正确的结果,但最好不要这样使用。
解决方法
通过 while
循环把输入流中的余留数据“吃”掉:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!