fseek,ftell,fprintf

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);

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章