在eclipse中执行程序时,console老是要求先输入(scanf)在输出(printf)。就是说不管代码中存在多少个scanf,老是先执行scanf,再一个一个的printf输出来。后来查找资料发现主要是缓冲区的问题。程序开始,printf其实已经执行输出了,只是它把内容都输出到“输出缓冲区了(stdout)”,因此没有直接显示到屏幕上,等待把全部的scanf语句都执行完后,printf再会把“输出缓冲区了(stdout)”中的内容所有输出到屏幕上。eclipse
缓冲区的类型能够是:.net
_IOFBF :全缓冲blog
_IOLBF :行缓冲ip
_IONBF :不缓冲get
解决办法有两个:console
方法一:设置缓冲区为空,即没有缓冲区。具体是在printf以前添加: setvbuf(stdout,NULL,_IONBF,0);设置缓冲区为空cli
方法二:每执行printf以后,强制缓冲区。具体是在每句printf以后添加:fflush(stdout);程序
转载于https://blog.csdn.net/wo17fang/article/details/46363975方法