在c中,我们可以使用fseek()函数找到文件的大小。像,

if (fseek(fp, 0L, SEEK_END) != 0)
{
    //  Handle repositioning error
}

所以,我有一个问题,推荐使用fseek()ftell()计算文件大小的方法吗?

最佳答案

如果您在Linux或其他类似Unix的系统上,您需要的是stat函数:

struct stat statbuf;
int rval;

rval = stat(path_to_file, &statbuf);
if (rval == -1) {
    perror("stat failed");
} else {
    printf("file size = %lld\n", (long long)statbuf.st_size;
}

在msvc下的windows上,可以使用_stati64
struct _stati64 statbuf;
int rval;

rval = _stati64(path_to_file, &statbuf);
if (rval == -1) {
    perror("_stati64 failed");
} else {
    printf("file size = %lld\n", (long long)statbuf.st_size;
}

与使用fseek不同,此方法不涉及打开文件或查找文件。它只是读取文件元数据。

09-09 18:17