fseek

fseek

int fseek(FILE *stream, long offset, int fromwhere);函式設定檔案指針stream的位置。 如果執行成功,stream將指向以fromwhere為基準,偏移offset(指針偏移量)個位元組的位置,函式返回0。如果執行失敗(比如offset取值大於等於2*1024*1024*1024,即long的正數範圍2G),則不改變stream指向的位置,函式返回一個非0值。 fseek函式和lseek函式類似,但lseek返回的是一個off_t數值,而fseek返回的是一個整型。

功 能

重定位流(數據流/檔案)上的檔案內部位置指針

注意:檔案指針指向檔案/流。位置指針指向檔案內部的位元組位置,隨著檔案的讀取會移動,檔案指針如果不重新賦值將不會改變或指向別的檔案。

頭檔案

#include <stdio.h>

用 法

int fseek(FILE *stream, long offset, int fromwhere);

描 述

函式設定檔案指針stream的位置。如果執行成功,stream將指向以fromwhere(偏移起始位置:檔案頭0(SEEK_SET),當前位置1(SEEK_CUR),檔案尾2(SEEK_END))為基準,偏移offset(指針偏移量)個位元組的位置。如果執行失敗(比如offset超過檔案自身大小),則不改變stream指向的位置。

fseek函式和lseek函式類似,但lseek返回的是一個off_t數值,而fseek返回的是一個整型。

返回值

成功,返回0,失敗返回-1,並設定error的值,可以用perror()函式輸出錯誤。

fseek position the file(檔案) position(位置) pointer(指針) for the file referenced by stream to the byte location calculated by offset.

程式例

int fseek( FILE *stream, long offset, int origin );

第一個參數stream為檔案指針

第二個參數offset為偏移量,正數表示正向偏移,負數表示負向偏移

第三個參數origin設定從檔案的哪裡開始偏移,可能取值為:SEEK_CUR、 SEEK_END 或 SEEK_SET

SEEK_SET: 檔案開頭

SEEK_CUR: 當前位置

SEEK_END: 檔案結尾

其中SEEK_SET,SEEK_CUR和SEEK_END依次為0,1和2.

簡言之:

fseek(fp,100L,0);把stream指針移動到離檔案開頭100位元組處;

fseek(fp,100L,1);把stream指針移動到離檔案當前位置100位元組處;

fseek(fp,-100L,2);把stream指針退回到離檔案結尾100位元組處。

使用實例:

注意事項

fseek函式的檔案指針,應該為已經打開的檔案。如果沒有打開的檔案,那么將會出現錯誤。 fseek函式也可以這樣理解,相當於在檔案當中定位。這樣在讀取規律性存儲檔案時可以利用其OFFSET偏移量讀取檔案上任意的內容。

fseek函式一般用於二進制檔案,也可以用於文本檔案。用於文本檔案操作時,需特別注意回車換行的情況:因為在一般瀏覽工具如UltraEdit中,回車換行視為兩個字元0x0D和0x0A,但真實的檔案讀寫和定位時卻按照一個字元0x0A進行處理,因此碰到此類問題時,可以考慮將檔案整個讀入記憶體,然後在記憶體中手工插入0x0D的方法,這樣可以達到較好的處理效果。

相關詞條

相關搜尋

熱門詞條

聯絡我們