首先查看一下linux用戶使用手冊
函數名:fseek
頭文件:#include
功能:把與stream 有關的讀寫文件位置指針放到一個指定位置。
參數:FILE *stream :使用fopen打開的文件指針stream
long offset : 偏移位置(以字節為單位)
int whence :基準位置,它一般指定為下列常量之一:
起始點 對應的數字 代表的文件位置
SEEK_SET 0 文件開頭
SEEK_CUR 1 文件當前位置
SEEK_END 2 文件末尾
函數聲明: int fseek(FILE *stream, long offset, int whence);
如果執行成功,stream將指向以whence為基準,偏移offset(指針偏移量)個字節的位置,函數返回0。如果執行失敗(比如offset取值大于等于2*1024*1024*1024,即long的正數范圍2G),則不改變stream指向的位置,函數返回-1,并且會設置errno,可以使用perror()輸出錯誤原因。
例題代碼:
程序運行結果:
fseek的第二個參數偏移位置正數表示向后(文件結尾的方向)移動,負號表示向前(文件開頭的方向)移動。
例:
fseek(stream, 100L, SEEK_CUR);//把stream指針移動到離文件當前位置100字節處。
fseek(stream, -100L,SEEK_END);//把stream指針移動到離文件結尾100字節處。
使用實例:
fseek函數和lseek函數類似,但lseek返回的是一個off_t數值,而fseek返回的是一個整型。通過ftell,可以獲取當前指針距離文件開頭的字節數。
注意事項:
fseek一般用于二進制文件的指針移動,也可以用于文本文件,但操作的stream必須是已經打開的文件。如果沒有打開的文件,那么將會出現錯誤。
fseek不能操作進程間通信的文件,如:pipe,FIFO或者socket。如果操作這些文件將會返回-1,并且設置errno為ESPIPE。