【问题标题】:should I use fseek SEEK_END [duplicate]我应该使用 fseek SEEK_END [重复]
【发布时间】:2013-10-03 10:45:57
【问题描述】:

我的问题很简单:

我应该使用 fseek 和 SEEK_END 来到达文件的末尾,然后获取它的长度吗? 因为在男人里面是这样说的:

  • 允许库实现无意义地支持 SEEK_END(因此,使用它的代码没有真正的标准可移植性)。

现在我正在使用 stat(来自 C)哪个更好?

【问题讨论】:

  • 您提到了statman,那么假设您使用的是Linux 或其他Unix 是否安全?你关心其他平台吗?
  • 这个问题很好,但你措辞的方式使它严重基于意见并导致讨论,这是不可取的。

标签: c fseek


【解决方案1】:

ftell 函数返回一个 long,这意味着在 ILP32 系统上,您无法正确获取大于 2GB 的文件的大小。您应该使用stat 函数或类似函数来获取文件的大小;如果您使用不同的函数名称 (stat64) 或定义预处理器宏以获得大文件的所需行为,请查看您所针对的操作系统的手册。

【讨论】:

    【解决方案2】:

    由于 C++ 从 C 继承了 fseekSEEK_END,我在这里引用 C 标准:

    C11(ISO/IEC 9899:201x) §7.21.9.2 fseek 函数第 3 节

    二进制流不需要有意义地支持 fseek 调用 wherece 值为SEEK_END

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      相关资源
      最近更新 更多