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

 我来答
风若远去何人留
2017-04-19 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450122
专业C/C++软件开发

向TA提问 私信TA
展开全部

C语言中获取文件大小方式有很多,在不使用任何系统命令,仅使用C自身库函数情况下,常用方式有两种:

一、获取文件系统属性,读取文件大小。 

在C语言库函数中有stat函数,可以获取文件的基本信息,其中就有文件大小。

#include <sys/stat.h>//包含头文件
int file_size(char* filename)//获取文件名为filename的文件大小。
{
    struct stat statbuf;
    int ret;
    ret = stat(filename,&statbuf);//调用stat函数
    if(ret != 0) return -1;//获取失败。
    return statbuf.st_size;//返回文件大小。
}

二、通过C语言文件操作,获取文件大小。 

以fopen打开的文件,通过fseek可以定位到文件尾,这时使用ftell函数,返回的文件指针偏移值,就是文件的实际大小。 

代码如下:

#include <stdio.h>//包含头文件。
int file_size(char* filename)//获取文件名为filename的文件大小。
{
    FILE *fp = fopen(filename, "rb");//打开文件。
    int size;
    if(fp == NULL) // 打开文件失败
        return -1;
    fseek(fp, 0, SEEK_END);//定位文件指针到文件尾。
    size=ftell(fp);//获取文件指针偏移量,即文件大小。
    fclose(fp);//关闭文件。
    return size;
}

三、注意事项:

第一种方式为直接读取文件信息,无需打开文件,所以更高效。

四、测试代码:

以上接口函数,均可以用如下主函数测试:

#include <stdio.h>
int main()
{
    char s[100];
    int size;
    scanf("%s",s);//输入文件名
    size = file_size(s);//获取文件大小。
    if(size == -1) printf("无法获取文件大小,可能文件并不存在或不可读\n");
    else printf("文件大小为%d\n", size);
    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式