请问C语言如何得到文件大小,如何删除文件

请问C语言如何得到文件大小,如何删除文件,第1张

1 如何得到文件大小

方法有好几个 但有的受 *** 作系统限制 此处提供一个比较通用的:

long GetFileSize(char filename)

{

long siz = 0;

FILE fp = fopen(filename, "rb");

if (fp) {

fseek(fp, 0, SEEK_END);

siz = ftell(fp);

fclose(fp);

}

return siz;

}

2 如何删除文件

方法也有好几个 但有的受 *** 作系统限制 此处提供一个比较通用的:

unlink(filename);

我测试了你的代码:

#include<stdioh>

#include<stringh>

#include<stdlibh>

void main()

{

FILE p=fopen("d:\\jiuibftxt","rt");

int length = 0;

for(;fgetc(p)!=EOF;length++);

fclose(p);

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

p=fopen("d:\\jiuibftxt","rb");

fseek(p,0,2);

length=ftell(p);

fclose(p);

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

}

文本文件的内容是:

FILE p=("jiuibftxt","rt");

int length;

for(;fgetc(p)!=EOF;length);

FILE p=(jiuibftxt","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语言获得文件的长度方式就是第二种:

FILEfp;

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

fseek(fp,0,SEEK_SET);

fseek(fp,0,SEEK_END);

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

#include<stdioh>

#include<stdlibh>

void main()

{

FILEfp;

int a;

if((fp=fopen("1txt","rb"))==NULL)

{

printf("此文件无法打开");

exit(0);

}

fseek(fp,0,2);

a=ftell(fp);

printf("%d\n",a);

fclose(fp);

}

望采纳!

1MFC中的方法:(C++)

CFileStatus status;

CFile::GetStatus("D:\\testtxt",status);

long lSizeOfFile;

lSizeOfFile = statusm_size;

lSizeOfFile的值就是D:\\testtxt文件的大小

2标准C获得文件大小的5种方法

(注意:"__FILE__"指的是当前文件,你可以改为有效路径的目标文件,比如"D:\\testtxt")

#include "stdafxh"

#include "stdioh"

#include <sys/stath>

#include <ioh>

#include <FCNTLH>

int getfilesize()

{

int iresult;

struct _stat buf;

iresult = _stat(__FILE__,&buf);

if(iresult == 0)

{

return bufst_size;

}

return NULL;

}

int getfilesize01()

{

int fp;

fp=_open(__FILE__,_O_RDONLY);

if(fp==-1)

return NULL;

return _filelength(fp);

//return NULL;

}

int getfilesize02()

{

int fp;

fp=_open(__FILE__,_O_RDONLY);

if(fp==-1)

return NULL;

return _lseek(fp,0,SEEK_END);

//return NULL;

}

int getfilesize03()

{

int fp;

fp=_open(__FILE__,_O_RDONLY);

if(fp==-1)

return NULL;

return _lseek(fp,0,SEEK_END);

//return NULL;

}

int getfilesize04()

{

FILE fp;

if((fp=fopen(__FILE__,"r"))==NULL)

return 0;

fseek(fp,0,SEEK_END);

return ftell(fp); //return NULL;

}

int getfilesize05()

{

FILE fp;

char str[1];

if((fp=fopen(__FILE__,"rb"))==NULL)

return 0;

for(int i = 0;!feof(fp);i++)

{

fread(&str,1,1,fp);

}

return i - 1; //return NULL;

}

int main(int argc, char argv[])

{

printf("getfilesize()=%d\n",getfilesize());

printf("getfilesize01()=%d\n",getfilesize01());

printf("getfilesize02()=%d\n",getfilesize02());

printf("getfilesize03()=%d\n",getfilesize03());

printf("getfilesize04()=%d\n",getfilesize04());

printf("getfilesize05()=%d\n",getfilesize05());

return 0;

}

#include <ioh>

#include <stdioh>

int main(void)

{

FILE f = 0; int fn = 0, sz = 0;

f = fopen("c:\\abctxt", "rb");

if(!f) {

fprintf(stderr, "File Not Found\n");

return 0;

}/end if/

fn = _fileno(f); /取得文件指针的底层流式文件号/

sz = _filelength(fn);/根据文件号取得文件大小/

printf("文件abctxt大小为:%d字节\n", sz);

fclose(f);

return 0;

}/end main/

备注:上述程序适用于任何一种文件,都可以直接求出大小。

以上就是关于请问C语言如何得到文件大小,如何删除文件全部的内容,包括:请问C语言如何得到文件大小,如何删除文件、C语言获取txt文件大小两种方法的差异、c语言如何计算文件大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9789540.html

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

发表评论

登录后才能评论

评论列表(0条)

保存