詳解fseek函數
時間:2023-04-23 來源:華清遠見
首先查看一下linux用戶使用手冊




函數名:fseek
頭文件:#include
功能:把與stream 有關的讀寫文件位置指針放到一個指定位置。
參數:FILE *stream :使用fopen打開的文件指針stream
long offset : 偏移位置(以字節(jié)為單位)
int whence :基準位置,它一般指定為下列常量之一:
起始點 對應的數字 代表的文件位置
SEEK_SET 0 文件開頭
SEEK_CUR 1 文件當前位置
SEEK_END 2 文件末尾
函數聲明: int fseek(FILE *stream, long offset, int whence);
如果執(zhí)行成功,stream將指向以whence為基準,偏移offset(指針偏移量)個字節(jié)的位置,函數返回0。如果執(zhí)行失敗(比如offset取值大于等于2*1024*1024*1024,即long的正數范圍2G),則不改變stream指向的位置,函數返回-1,并且會設置errno,可以使用perror()輸出錯誤原因。
例題代碼:

程序運行結果:

fseek的第二個參數偏移位置正數表示向后(文件結尾的方向)移動,負號表示向前(文件開頭的方向)移動。
例:
fseek(stream, 100L, SEEK_CUR);//把stream指針移動到離文件當前位置100字節(jié)處。
fseek(stream, -100L,SEEK_END);//把stream指針移動到離文件結尾100字節(jié)處。
使用實例:

fseek函數和lseek函數類似,但lseek返回的是一個off_t數值,而fseek返回的是一個整型。通過ftell,可以獲取當前指針距離文件開頭的字節(jié)數。

注意事項:
fseek一般用于二進制文件的指針移動,也可以用于文本文件,但操作的stream必須是已經打開的文件。如果沒有打開的文件,那么將會出現錯誤。
fseek不能操作進程間通信的文件,如:pipe,FIFO或者socket。如果操作這些文件將會返回-1,并且設置errno為ESPIPE。
華清遠見上海中心喬遷新居,開啟全新發(fā)展篇章!
華清遠見連續(xù)9年獲ISO9001質量管理體系認證,匠心做產
華清遠見關于教育部高教司2023年產學合作協(xié)同育人項目
華清遠見再獲兩項計算機軟件著作權登記證書,行業(yè)實力
華清遠見嵌入式師資班圓滿收官,虛擬仿真全面構建系統(tǒng)
華清遠見被授予中國電子學會“電子信息人才能力提升工
企校協(xié)同創(chuàng)新大賽全國總決賽在清華大學圓滿收官,華清
華清遠見教育集團再次入選教育部供需對接就業(yè)育人項目
華清遠見關于提醒學員謹防網絡詐騙的嚴正聲明
華清遠見協(xié)辦“技能興魯”職業(yè)技能大賽人工智能賽項圓
