fflush(stdin)与fflush(stdout)
1.fflush(stdin):
作用:清理標準輸入流,把多余的未被保存的數據丟掉。。
如:
int main() {int num;char str[10];cin>>num;cout<<num<<endl;cin>>str;cout<<str<<endl;return 0; }從stdin獲得一個整數存入num,接著立馬打印出來;從stdin獲得一個字符串存入str,也立馬打印出來。但是下面這種可能需要特別考慮:在首行輸入了兩個整數,在cin>>num之
后,stdin緩沖還有一個整數沒被讀取。接下來,不等輸入字符串,就直接把上面多出來的數字存入到str中去并打印。某種程度上這是操作不規范造成的,但是程序應該要有健壯
性,程序員應該提前預防這種不規范的操作。可以在程序界面上提示“請輸入1個整數”,甚至有時候不厭其煩的強調和警告也必要。當然,本例為求簡單,并不在UI友好方面做文
章。這時,可以在cin>>str語句前插入fflush(stdin),如此一來就可以清空標準輸入緩沖里多余的數據。
2.fflush(stdout):
對標準輸出流的清理,但是它并不是把數據丟掉,而是及時地打印數據到屏幕上。標準輸出是以行為單位進行的,也即碰到\n才打印數據到屏幕。這就可能造成延時,但是Windows
平臺上,似乎并看不出差別來。也即MSFT已經將stdout的輸出改成及時生效了。
fflush函數被廣泛使用在多線程、網絡編程的消息處理中。
fflush(stdout):清空輸出緩沖區,并把緩沖區內容輸出。
賜教!
轉載于:https://www.cnblogs.com/melons/p/5791826.html
總結
以上是生活随笔為你收集整理的fflush(stdin)与fflush(stdout)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL · 性能优化· InnoDB
- 下一篇: java 工厂模式