代码目前正在执行此操作,fgetpos会处理大于4GB的文件,但搜索会返回错误,所以任何想法如何寻找结束file > 4GB
?
fpos_t currentpos; sok=fseek(fp,0,SEEK_END); assert(sok==0,"Seek error!"); fgetpos(fp,¤tpos); m_filesize=currentpos;
R.... 9
忽略出现在其中的"64"的所有答案.在Linux上,您应该添加-D_FILE_OFFSET_BITS=64
到CFLAGS并使用fseeko
和ftello
/返回off_t
值而不是的函数long
.这些不是C的一部分,而是POSIX.其他(非Linux)POSIX系统可能需要不同的选项以确保它off_t
是64位; 检查你的文档.
忽略出现在其中的"64"的所有答案.在Linux上,您应该添加-D_FILE_OFFSET_BITS=64
到CFLAGS并使用fseeko
和ftello
/返回off_t
值而不是的函数long
.这些不是C的一部分,而是POSIX.其他(非Linux)POSIX系统可能需要不同的选项以确保它off_t
是64位; 检查你的文档.
如果您在Windows中,则需要GetFileSizeEx(MSDN).返回值是64位int.
在linux stat64(手册页)是正确的.如果您正在处理文件*,请使用fstat.