📅  最后修改于: 2023-12-03 14:59:39.625000             🧑  作者: Mango
有时候我们需要在 C 程序中获取文件的大小来进行一些操作,例如分配内存等。本文将介绍几种获取文件大小的方式。
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
函数可以定位到文件的末尾,与文件起始位置的偏移即为文件大小。下面是一个示例程序:
#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
函数与 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
函数。不同的方式适用于不同的情况,读者可以根据实际需要进行选择。