eclipse C_C++执行scanf优先于printf的解决方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
eclipse C/C++执行scanf优先于printf的解决方法
--kernelboy 一、现状
在执行程序时,console总是要求先输入(scanf)在输出(printf)。就是,无论代码中存在多少个scanf,总是先执行scanf,再一个一个的printf输出来。
二、原因
缓冲区(有待深入理解)
程序开始,printf其实已经执行输出了,只是它把内容都输出到“输出缓冲区了(stdout)”,所以没有直接显示到屏幕上,等待把所有的scanf语句都执行完后,printf再会把“输出缓冲区了(stdout)”中的内容全部输出到屏幕上。
缓冲区的类型可以是:
_IOFBF :全缓冲
_IOLBF :行缓冲
_IONBF :不缓冲
三、解决办法
在main函数开始设置不允许“输出缓冲区了(stdout)”:
setvbuf(stdout,NULL,_IONBF,0);