int filesize(FILE * handle)
{
int filesize;
int old_pointer = ftell(handle);
fseek(handle, 0, SEEK_END);
filesize = ftell(handle);
fseek(handle, old_pointer, SEEK_SET);
return filesize;
}
这是函数返回文件大小的好方法吗?
最佳答案
这是一种方法,只要您的文件不是太大(对于 32 位系统或 Windows 64 位,意味着不超过 2 GiB)。它具有或多或少在任何平台上工作的优点。当然,ftell()
返回一个 long
,而不是一个 int
(所以在 64 位非 Windows 系统上,它可以报告的文件要大得多,只要你修复你的代码适当)。但是,需要四个函数调用有点昂贵。
POSIX 替代品是 stat()
, lstat()
和 fstat()
.
Windows API 中会有类似物。
关于c - 返回文件大小的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8813136/