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