int fseek(FILE *stream,long offset,int fromwhere);函數設置文件指針stream的位置。
如果執行成功,stream將指向以fromwhere爲基準,偏移offset(指針偏移量)個字節的位置,函數返回0.
如果執行失敗(比如offset超過文件自身大小),則不改變stream指向的位置,函數返回一個非0值。
函數ftell用於得到文件位置指針當前位置相對於文件首的偏移的字節數。
功能:返回當前文件位置。
ftell(fp);利用函數ftell()也能方便地知道一個文件的長。
如以下語句序列:fseek(fp,0L,SEEK_END);len = ftell(fp);
首先將文件的當前位置移到文件的末尾,然後調用函數ftell()獲得當前位置相對於文件首的位移,該位移值等於文件所含字節數。
fprintf是C/C++中的一個格式化寫——庫函數;
其作用是格式化輸出到一個流/文件中;
原型是int fprintf(FILE *stream,const char *format,[argument]...),fprintf()函數根據指定的format(格式)發送信息(參數)到由stream(流)指定的文件。
定義:
int fprintf(FILE *stream,const char *format,[argument])
其中,File *stream,爲文件指針,const char *format以什麼樣的格式輸出,[argument]爲輸入列表
fseek函數是 用來設定文件的當前讀寫位置.
函數原型: int fseek(FILE *fp,long offset,int origin);
函數功能:把fp的文件讀寫位置指針移到指定的位置.
fseek(fp,20,SEEK_SET); 意思是把fp文件讀寫位置指針從文件開始後移20個字節.
ftell函數是用來獲取文件的當前讀寫位置;
函數原型: long ftell(FILE *fp)
函數功能:得到流式文件的當前讀寫位置,其返回值是當前讀寫位置偏離文件頭部的字節數.
ban=ftell(fp); 是獲取fp指定的文件的當前讀寫位置,並將其值傳給變量ban.
fseek函數與ftell函數綜合應用:
分析:可以用fseek函數把位置指針移到文件尾,再用ftell函數獲得這時位置指針距文件頭的字節數,這個字節數就是文件的長度.
#i nclude <stdio.h>
main()
{
FILE *fp;
char filename[80];
long length;
printf("輸入文件名:");
gets(filename);
//以二進制讀文件方式打開文件
fp=fopen(filename,"rb");
if(fp==NULL)
printf("file not found!\n");
else
{
//把文件的位置指針移到文件尾
fseek(fp,OL,SEEK_END);
//獲取文件長度;
length=ftell(fp);
printf("該文件的長度爲%1d字節\n",length);
fclose(fp);
}
}