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