我应该使用fseek SEEK_END吗?

时间:2013-09-27 07:57:12

标签: c fseek

我的问题很简单:

我应该使用带有SEEK_END的fseek来获取文件的末尾然后获取它的长度吗? 因为在男人身上说:

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

  

C11(ISO / IEC 9899:201x)§7.21.9.2 fseek功能第3部分

     

二进制流无需支持具有fseek值的SEEK_END次调用。