1. 程式人生 > >c檔案操作之位置指標設定函式fseek

c檔案操作之位置指標設定函式fseek

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位元組處。