c檔案操作之位置指標設定函式fseek
阿新 • • 發佈:2018-12-31
fseek
原型:int fseek(FILE *stream, long offset, int fromwhere);
功能:重定位流(資料流/檔案)上的檔案內部位置指標
注意:不是定位檔案指標(檔案指標是 FILE * fp 這樣的),檔案指標指向檔案/流。位置指標指向檔案內部的位元組位置,隨著檔案的讀取會移動,檔案指標如果不重新賦值將不會改變指向別的檔案。
函式設定檔案指標stream的位置。如果執行成功,stream將指向以fromwhere(偏移起始位置:檔案頭(SEEK_SET)0,當前位置(SEEK_CUR)1,檔案尾(SEEK_END)2)為基準,偏移offset(指標偏移量)個位元組的位置。如果執行失敗( 比如offset超過檔案自身大小),則不改變stream指向的位置。
返回值:成功,返回0,失敗返回-1,並設定errno的值,可以用perror()函式輸出錯誤。
第一個引數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);把檔案內部指標移動到離檔案開頭100位元組處;
fseek(fp,100L,1);把檔案內部指標移動到離檔案當前位置100位元組處;
fseek(fp,-100L,2);把檔案內部指標退回到離檔案結尾100位元組處。