?? 12.2.5 文件指針定位.txt
字號:
12.2.5 文件指針定位
當調用文件寫入函數向文件中寫入數據后,還可以再次寫入其他數據。例如,可以在如例 12-3所示
的 OnFileWrite函數中第 4行代碼之后添加下面這行代碼:
食 fwrite( "歡迎訪問., 1, strlen("歡迎訪問"), pFile);
Build井運行 File程序,井單擊【文件操作\寫入文件】菜單項,然后打開l.txt文件,可以看到緊
接著上次的數據寫入了新數據。此時該文件的內容如圖 12.4所示。
圖 12.4連續寫入數據后的文件內容
在第二次調用 fwrite函數時,系統如何知道應該從文件中何處開始繼續寫入數據呢?對于 C語言的
文件操作來說,它有一個文件指針,該指針會隨時根據我們對文件的操作來移動位置,始終指向文
件下一個將要寫入的位置。當執行寫入操作之后,文件指針就指向了所寫數據占據位置的下一個位
置。如果希望在寫入數據后,返回到文件的開始位置處再寫入數據,就需要將這個文件指針移動到
文件開始位置,這可以利用 C語言中的 fseek函數來實現。該函數的作用是把文件指針從當前位置
移動到指定的位置。 fseek函數聲明形式如下所示:
int fseek( FILE *stream, long offset , int origin );
可以看到. fseek函數有三個參數,各參數的含義分別如下所述。
. stream
指向 FILE結構體指針。
. offset
設定偏移量。
. origin
指定文件指針的起始位置。該參數可以取如表 12.3所示的三個值。
表 12.3 origin參數的取值
取 值 說 明
SEEK_CUR 從文件指針當前位置處開始
SEEK_END 從文件的結尾處開始
SEEK_SET 從文件的開始處開始
如果希望將文件指針移動到文件的開始位置處,就應該將 fseek函數的 origin參數設置為
SEEK_SET.并且將 offset參數設置為 0。因此,可以在已有的 OnFileWrite函數中第二次調用
fwrite函數(即卡述食符號所示代碼)之前先將文件指針的位置移動到文件開始處,這樣,第二次調
用 fwrite函數寫入的數據將出現在文件的開始處,這時的 OnFileWrite函數的代碼如例 12-4所示。
例 12-4
void CFileview : :OnFileWrite()
FILE *pFile=fopen("l.txt" , "w" );
fwrite ("http: //www. sunxin . org" , 1 , strlen (..ht tp: //www.sunxin.org..).pF
ile) ;
fseek(pFile , 0, SEEK_SET);
fwrite(" ftp :" , l , strlen(" ftp : ") , pFile);
11 fwrite( " 歡迎訪問 " , 1 , s t r 1 en ( "歡迎訪問") , pFile);
fclose(pFile) ;
Build井運行 File程序,單擊【文件操作飛寫入文件】菜單項,然后打開l.txt文件,可以看到此時
文件的內容為: "ftp://www.sunxin.org" (如圖 12.5所示)。即第二次調用 fwrite函數寫入文件的
內容位于文件的開始處。這就是利用 fseek函數控制文件指針位置的實現。
圖 12.5利用 fseek函數移動文件指針后寫入文件的結果
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -