您的位置:首页 > 其它

如何通过ftell和fseek来获取文件大小

2013-11-27 10:05 459 查看
#include <stdio.h>
int main ()
{
FILE * pFile=NULL;
long size;
pFile = fopen ("myfile.txt","rb");
if (pFile==NULL) perror ("Error opening file");
else
{
fseek (pFile, 0, SEEK_END);
size=ftell (pFile);
fclose (pFile);
pFile=NULL;
printf ("Size of myfile.txt is: %ld bytes.\n",size);
}
return 0;
}


  首先利用fseek(pfile,0,SEEK_END)将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值就等于文件所含字节数。这样就得到文件大小了!

fseek(重定位流上的文件指针)

int fseek(FILE *stream, long offset, int fromwhere);

函数说明:第一个参数stream为文件指针, 第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移 第三个参数fromwhere设定从文件的哪里开始偏移,可能取值为:SEEK_CUR(当前位置)、 SEEK_END(文件结尾)或 SEEK_SET(文件开头), 其中SEEK_SET,SEEK_CUR和SEEK_END的值依次为0,1和2。
例如:
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;

返回值: 成功,返回0,否则返回其他值。

ftell(返回当前文件位置)

long ftell(FILE *stream)

函数说明:用于得到文件位置指针当前位置相对于文件首的偏移字节数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: