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