C语言学习,关于fflush 和setvbuf
最近學(xué)習(xí)C語言的時(shí)候,學(xué)到文件的輸入和輸出函數(shù), 對(duì)fflush和setvbuf 一直很困惑,現(xiàn)在雖然沒有解開,但是有了一點(diǎn)淺顯的理解。
1、ffulsh 針對(duì)的是輸出流,是將輸出緩存中的數(shù)據(jù)推到指向的文件里。
2、如果想清空輸入緩沖,最好使用 char ch; while((ch=getchar())!='\n'&&ch!=EOF) ; fflush(stdin) 是未定義的,不安全;
3、setvbuf 作用是? 按照您的設(shè)定創(chuàng)建一個(gè)緩存。 您可以設(shè)定大小和位置名,以及 緩沖的方式;
這里要注意的是,比如選的緩沖方式是? _IOLBF ,那么并不是說? 只要讀取的時(shí)候? 就先把完整的一行讀取進(jìn)來, 比如? ?文件中? 一行有30個(gè)字符,你設(shè)定的緩存容量是40字符,但是你的字符數(shù)組長(zhǎng)度是10,那么讀取的時(shí)候? 每次就是讀取9個(gè)字符,開始的時(shí)候? 進(jìn)入緩存的也就是9個(gè)字符,而不是一行全部進(jìn)去,再讀。? 只是說? 讀到換行符的時(shí)候,就本次而言就停止讀入了。
另外,使用setvbuf創(chuàng)建緩存時(shí),如果緩存的位置在ch[],那么后面的數(shù)組? 就不要用ch[]操作了,容易混亂,引發(fā)意想不到的錯(cuò)誤,? 應(yīng)該重新定義一個(gè)數(shù)組。
總結(jié)
以上是生活随笔為你收集整理的C语言学习,关于fflush 和setvbuf的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原神手游海祗之心大门怎么打开
- 下一篇: 关于 C语言的 按位取反 ~