如何用C语言获取文件的大小

如何用C语言获取文件的大小,第1张

/*  解题思路: 以只读方式打开某一文件,然后将文件指针定位在文件结尾的位置,利用ftell函数返回指针的在文件中的相对位置即可。

*/

#include "stdio.h"

main()

{ FILE *fp   /*定义文件指针*/

  long cnt   /*定义变量cnt用来存储文件大小数据*/

  fp=fopen("c:\\1.txt","r")   /*此处请填写测试文件的地址,并以只读("r")方式打开并旅销文件*/

  if( fp==NULL )  /*如果打开的文件不存在,则退出*/

     { exit(0)

       printf("文件打开失败!")

     }

  fseek(fp,0L,SEEK_END)   /*利用fseek函数将指针定位在文件结尾的位置*/

  cnt=ftell(fp)   /*利用ftell函数返回指针相对于文件开头的位置,以字节计绝游算*/

 镇没 printf("文件所占的字节数为%ld个\n",cnt)   /*进行输出*/

}

我测试了你的代轿正岁码:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

void main()

{

FILE *p=fopen("d:\\jiuibf.txt","rt")

int length = 0

for(fgetc(p)!=EOFlength++)

fclose(p)

printf("第闭睁一种方式,文件长度=%d\n",length)

p=fopen("d:\\jiuibf.txt","rb")

fseek(p,0,2)

length=ftell(p)

fclose(p)

printf("第二种方式,文件长度=%d\n",length)

}

文本文件的内容是:

FILE *p=("jiuibf.txt","rt")

int length

for(fgetc(p)!=EOFlength)

FILE *p=(jiuibf.txt","rb")

int length

fseek(p,0,2)

length=ftell(p)

程序的输出是:

原因分析:

在windows下,以文本方式写入文件的\n会被转换为\r\n(也就是0x0D0A),输出的时候,\r\n会被转换回\n。

fgetc在读入时会将\r\n转换成一个\n;上面的文本文件有6个回车换行。

所以第一种方式比第二种方式清指少6

C语言获得文件的长度方式就是第二种:

FILE*fp

fp=fopen("localfile","rb")// localfile文件名

fseek(fp,0,SEEK_SET)

fseek(fp,0,SEEK_END)

long longBytes=ftell(fp)// longBytes就是文件的长度

你可以用程序open文件,用fgetc读文件,比并枯较读入的byte个数。

用二进制打开。

FILE *fin

int c,N=0,N2=0

char filename1[32]="a.txt"

char filename2[32]="a.dat"

if ( (fin = fopen(filename1,"rb") ) == NULL ) {

printf("\007Cann't open input file %s\n",filename1)exit(1)

}

while (!feof(fin)) {

c= fgetc(fin)

N=N+1

}

fclose (fin)

printf ("Total number of bytes: %d in %s\n",N,filename1)

if ( (fin = fopen(filename2,"rb") ) == NULL ) {

printf("\搏判007Cann't open input file %s\n",filename2)exit(1)

}

while (!feof(fin)) {

c= fgetc(fin)

N2=N2+1

}

fclose (fin)

printf ("Total number of bytes: %d in %s\n"基蔽改,N2,filename2)

// 比较N何N2

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8171599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存