c - 返回文件大小的函数?

标签 c

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/

相关文章:

C UDP套接字: Arbitrary setsockopt behavior (with SO_RCVTIMEO)

c - 位掩码左移

c - altivec 提取部分 vector ?

c - 什么时候需要在 iso646.h 头文件中使用按位和逻辑运算符的替代宏?

c - 为共享内存初始化结构体中的 int

java - 在大学完成计算机科学专业的第一年…夏天该做什么?

python - 包装几个 C 源(.c 文件)以使用 SWIG 在 Python 中使用它们的函数

ios - fork() 通过使用 svc 调用实现

python - CPython 作为 C 的库(从 C 执行 Python 代码)

c - extern“C”在msvc++ 9.0中无效