📜  c 获取文件大小 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:59:39.625000             🧑  作者: Mango

以 C 编程语言获取文件大小

有时候我们需要在 C 程序中获取文件的大小来进行一些操作,例如分配内存等。本文将介绍几种获取文件大小的方式。

使用 stat 函数

stat 函数可以获取文件的一些信息,包括文件大小。下面是一个简单的示例程序:

#include <stdio.h>
#include <sys/stat.h>

int main() {
    struct stat st;

    if (stat("test.txt", &st) == 0) {
        printf("File size: %ld bytes\n", st.st_size);
    }

    return 0;
}

在这个例子中,我们调用了 stat 函数来获取 test.txt 文件的信息,并打印出了文件大小。需要注意的是,st_size 成员变量的类型是 off_t,通常被定义为 long 类型,因此在打印时需要使用 %ld 格式化符。

使用 fseek 函数

fseek 函数可以定位到文件的末尾,与文件起始位置的偏移即为文件大小。下面是一个示例程序:

#include <stdio.h>

int main() {
    FILE *fp = fopen("test.txt", "r");

    if (fp) {
        fseek(fp, 0L, SEEK_END);
        printf("File size: %ld bytes\n", ftell(fp));
        fclose(fp);
    }

    return 0;
}

在这个例子中,我们先打开了 test.txt 文件,然后使用 fseek 函数将文件指针定位到文件末尾,再使用 ftell 函数获取文件指针的偏移量,即为文件大小。需要注意的是,在使用 ftell 函数之前,文件指针必须先定位到文件末尾。

使用 fstat 函数

fstat 函数与 stat 函数作用类似,可以获取文件的信息,包括文件大小。只是调用方式略有不同。下面是一个示例程序:

#include <stdio.h>
#include <sys/stat.h>

int main() {
    FILE *fp = fopen("test.txt", "r");
    struct stat st;

    if (fp && fstat(fileno(fp), &st) == 0) {
        printf("File size: %ld bytes\n", st.st_size);
        fclose(fp);
    }

    return 0;
}

在这个例子中,我们先打开了 test.txt 文件,然后通过 fileno 函数获取文件描述符,再将文件描述符与 fstat 函数传给它,以获取文件信息,包括文件大小。

总结

本文介绍了三种获取文件大小的方式,分别是使用 stat 函数、fseek 函数和 fstat 函数。不同的方式适用于不同的情况,读者可以根据实际需要进行选择。