找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1659|回復(fù): 0
收起左側(cè)

C語(yǔ)言中的刷新和定位函數(shù)

[復(fù)制鏈接]
ID:114320 發(fā)表于 2016-4-18 21:48 | 顯示全部樓層 |閱讀模式
一.fflush

1.fflush的原型如下:

intfflush(FILE *stream);

2.當(dāng)需要立即把輸出緩沖區(qū)的數(shù)據(jù)進(jìn)行物理寫(xiě)入時(shí),應(yīng)該使用這個(gè)函數(shù)。例如調(diào)用fflush函數(shù)保證調(diào)試信息實(shí)際打印出來(lái),而不是保存在緩沖區(qū)中直到以后才打印。

二.定位函數(shù)

1.在正常情況下,數(shù)據(jù)以線性的方式寫(xiě)入,這意味著后面寫(xiě)入的數(shù)據(jù)在文件中的位置是在以前所有寫(xiě)入數(shù)據(jù)的后面。C同時(shí)支持隨機(jī)訪問(wèn)I/O,也就是以任意順序訪問(wèn)文件的不同位置。隨機(jī)訪問(wèn)是通過(guò)在讀取或?qū)懭肭埃榷ㄎ坏轿募行枰奈恢脕?lái)實(shí)現(xiàn)的。

2.定位函數(shù)原型:

1>long ftell(FILE*stream);

2>intfseek(FILE *steam,long offset,intfrom);

3.ftell函數(shù)返回流的當(dāng)前位置。即:下一個(gè)讀取或?qū)懭雽⒁_(kāi)始的位置距離文件起始位置的偏移量。該函數(shù)允許保存一個(gè)文件的當(dāng)前位置。

1>在二進(jìn)制流中,這個(gè)值就是當(dāng)前位置距離文件起始位置之間的字節(jié)數(shù)。

2>在文本流中,這個(gè)值表示一個(gè)位置,但它并不一定準(zhǔn)確地表示當(dāng)前位置和文件起始位置之間的字符數(shù),因?yàn)橛行┫到y(tǒng)將對(duì)行末字符進(jìn)行翻譯轉(zhuǎn)換。但是,ftell函數(shù)返回的值總是可以用于fseek函數(shù)中,作為一個(gè)距離文件起始位置的偏移量。

4.fseek函數(shù)允許你一個(gè)流中定位。這個(gè)函數(shù)將改變下一個(gè)讀取或?qū)懭氩僮鞯奈恢谩K牡?1個(gè)參數(shù)是需要改變的流。它的第2和第3個(gè)參數(shù)標(biāo)識(shí)文件中需要定位的位置。

1>試圖定位到一個(gè)文件的起始位置之前是一個(gè)錯(cuò)誤。定位到文件尾并進(jìn)行寫(xiě)入將擴(kuò)展這個(gè)文件。定位到文件尾之后并進(jìn)行讀取將導(dǎo)致返回一條“到達(dá)文件尾”的信息。

2>在二進(jìn)制流中,從SEEK_END進(jìn)行定位可能不被支持,所以應(yīng)該避免。

3>在文本流中,如果from是SEEK_CUR或SEEK_END,offset必須是零。如果from是SEEK_SET,offset必須是一個(gè)從同一個(gè)流中以前調(diào)用ftell所返回的值。

5.用fseek改變一個(gè)流的位置會(huì)帶來(lái)三個(gè)副作用。

1>首先,行末指示字符被清除。

2>其次,如果在fseek之前使用ungetc把一個(gè)字符返回到流中,那么這個(gè)被退回的字符會(huì)被丟棄,因?yàn)樵诙ㄎ徊僮饕院,它不再是“下一個(gè)字符”。

3>最后,定位允許你從寫(xiě)入模式切換到讀取模式,或者回到打開(kāi)的流以便更新。


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表