fseek是便携式答案.在任何理智的实现中,它将读取文件的元数据而不是其内容,以确定文件的结尾,同时拒绝在没有记录此类数据的文件系统支持的流中进行搜索.
没有其他可靠的方法来获得纯ISO C中的文件大小,而不是寻找到最后然后倒回; 操作系统有特定的API来做到这一点,例如,你可以使用POSIX系统fstat上fileno的FILE*获得的大小:
#include <sys/types.h>
#include <sys/stat.h>
off_t filesize(FILE *fp)
{
// error checking omitted for clarity
int fd = fileno(fp);
struct stat sb;
fstat(fd, &sb);
return sb.st_size;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |