C语言获取文件的大小

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

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

1

2

3

4

5

6

7

8

9

#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函数,返回的文件指针偏移值,就是文件的实际大小。 

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

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

}

三、注意事项:

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

四、测试代码:

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

1

2

3

4

5

6

7

8

9

10

11

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

}

猜你喜欢

转载自blog.csdn.net/qq_36553031/article/details/88393308
今日推荐