Ale*_*lds 4 c c++ porting fseek ftell
在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);
Run Code Online (Sandbox Code Playgroud)
是否有基于填充或特定情况的其他信息,可以从此代码返回错误文件大小的开发环境,编译器或操作系统?在1999年左右,C或C++规范是否有变化,这会导致此代码在某些情况下不再起作用?
对于这个问题,请假设我通过使用标志进行编译来添加大文件支持-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1.谢谢.
它不会对unseekable文件的工作像/proc/cpuinfo或/dev/stdin或/dev/tty或得到与管道文件popen
如果该文件由另一个进程同时写入,它将无法工作.
使用Posix stat函数可能更有效,更可靠.当然,非Posix系统可能无法使用此功能.
| 归档时间: |
|
| 查看次数: |
4311 次 |
| 最近记录: |