本文目錄一覽:
fseek函數是怎麼用的?
fseek函數用於重定位流(數據流/文件)上的文件內部位置指針。
函數原型int
fseek(FILE
*stream,
long
offset,
int
fromwhere);
參數:
stream為文件流的指針
offset
偏移量
fromwhere
起始位置
具體功能:如果執行成功,stream將指向以fromwhere(起始位置:文件頭0(SEEK_SET),當前位置1(SEEK_CUR),文件尾2(SEEK_END))為基準,偏移offset(指針偏移量)個位元組的位置。如果執行失敗(比如offset超過文件自身大小),則不改變stream指向的位置。
返回值:
成功,返回0,失敗返回-1,並設置errno的值,可以用perror()函數輸出錯誤。
實例:
#include
stdio.h
long
filesize(FILE*stream);
int
main(void)
{
FILE
*stream;
stream=fopen(“MYFILE.TXT”,”w+”);
fprintf(stream,”This
is
a
test”);
printf(“File
size
of
MYFILE.TXT
is
%ld
bytes\n”,filesize(stream));
fclose(stream);
return
0;
}
long
filesize(FILE*stream)
{
long
curpos,length;
curpos=ftell(stream);
fseek(stream,0L,SEEK_END);
length=ftell(stream);
fseek(stream,curpos,SEEK_SET);
return
length;
}
在C語言中fseek()的功能
fseek()是重定位流(數據流/文件)上的文件內部位置指針。
注意:文件指針指向文件/流。位置指針指向文件內部的位元組位置,隨著文件的讀取會移動,文件指針如果不重新賦值將不會改變或指向別的文件。
如果執行成功,stream將指向以fromwhere為基準,偏移offset(指針偏移量)個位元組的位置,函數返回0。如果執行失敗(比如offset取值大於等於2*1024*1024*1024,即long的正數範圍2G),則不改變stream指向的位置,函數返回一個非0值。
擴展資料:
注意事項
fseek函數的文件指針,應該為已經打開的文件。如果沒有打開的文件,那麼將會出現錯誤。 fseek函數也可以這樣理解,相當於在文件當中定位。
這樣在讀取規律性存儲文件時可以利用其OFFSET偏移量讀取文件上任意的內容。
fseek函數一般用於二進位文件,也可以用於文本文件。用於文本文件操作時,需特別注意只有fseek(fp, 0, SEEK_SET) 和 fseek(fp, ftell(fp), SEEK_SET)能確保結果符合預期。
參考資料來源:百度百科-fseek
fseek的用法
int fseek(FILE *stream, long offset, int fromwhere);
第一個參數file指針
第二個參數移動的偏移量
第三個參數移動到哪裡
分別用3個宏
SEEK_SET 既0 文件開頭
SEEK_CUR 既1 文件當前位置
SEEK_END 既2 文件結尾
但不推薦用數字 最好用宏
簡言之:
fseek(fp,100L,SEEK_SET);把fp指針移動到離文件開頭100位元組處;
fseek(fp,100L,SEEK_CUR);把fp指針移動到離文件當前位置100位元組處;
fseek(fp,100L,SEEK_END);把fp指針退回到離文件結尾100位元組處。
此函數常用來計算流的長度:
int filesize = fseek( fp, 0, SEEK_END );
fseek( fp, 0, SEEK_SET );
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/282865.html