fseek(移動檔案流的讀寫位置)
相關函數 rewind,ftell,fgetpos,fsetpos,lseek
表標頭檔 #include<stdio.h>
定義函數 int fseek(FILE * stream,long offset,int whence);
函數說明 fseek()用來移動檔案流的讀寫位置。參數stream為已開啟的檔案指標,參數offset為根據參數whence來移動讀寫位置的位移數。
參數 whence為下列其中一種:
SEEK_SET從距檔案開頭offset位移量為新的讀寫位置。SEEK_CUR 以目前的讀寫位置往後增加offset個位移量。
SEEK_END將讀寫位置指向檔案尾後再增加offset個位移量。
當whence值為SEEK_CUR 或SEEK_END時,參數offset允許負值的出現。
下列是較特別的使用方式:
1) 欲將讀寫位置移動到檔案開頭時:fseek(FILE *stream,0,SEEK_SET);
2) 欲將讀寫位置移動到檔案尾時:fseek(FILE *stream,0,0SEEK_END);
傳回值 當調用成功時則返回0,若有錯誤則返回-1,errno會存放錯誤碼。
附加說明 fseek()不像lseek()會返回讀寫位置,因此必須使用ftell()來取得目前讀寫的位置。
範例 #include<stdio.h>
main()
{
FILE * stream;
long offset;
fpos_t pos;
stream=fopen(“/etc/passwd”,”r”);
fseek(stream,5,SEEK_SET);
printf(“offset=%d/n”,ftell(stream));
rewind(stream);
fgetpos(stream,&pos);
printf(“offset=%d/n”,pos);
pos=10;
fsetpos(stream,&pos);
printf(“offset = %d/n”,ftell(stream));
fclose(stream);
}
執行 offset = 5
offset =0
offset=10