eclipse C_C++执行scanf优先于printf的解决方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档