当前位置:文档之家› eclipse C_C++执行scanf优先于printf的解决方法

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

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);。

相关主题