在C或C++中,可以使用以下代码返回文件大小:
const unsigned long long at_beg = (unsigned long long) ftell(filePtr);
fseek(filePtr, 0, SEEK_END);
const unsigned long long at_end = (unsigned long long) ftell(filePtr);
const unsigned long long length_in_bytes = at_end - at_beg;
fprintf(stdout, "file size: %llu\n", length_in_bytes);
是否存在开发环境、编译器或操作系统,根据填充或其他特定情况下的信息,会从此代码返回错误的文件大小?在C或C++规范中是否有关于1999年左右的更改,导致此代码在某些情况下不再起作用?
对于这个问题,请假设我正在使用编译选项-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1
添加大文件支持。谢谢。
long
类型。 - Bo Persson