eclipse C/C++执行scanf优先于printf

在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方法

相关文章
相关标签/搜索