C 如何使用fgetpos()获取文件的大小
如何使用C 如何使用fgetpos()获取文件的大小,c,gcc,C,Gcc,如何使用fgetpos()获取文件大小?我实际上想显示一个大文件的文件大小(3-10GB)试试看 FILE * fp = fopen(filename, "r"); // seek to the end fseek(fp, 0, SEEK_END); fpos_t flesize; // get current position fgetpos(fp, &flesize); 我宁愿推荐fstat,不过: struct stat file_stat; fstat(fileno(fp)
fgetpos()
获取文件大小?我实际上想显示一个大文件的文件大小(3-10GB)试试看
FILE * fp = fopen(filename, "r");
// seek to the end
fseek(fp, 0, SEEK_END);
fpos_t flesize;
// get current position
fgetpos(fp, &flesize);
我宁愿推荐fstat
,不过:
struct stat file_stat;
fstat(fileno(fp), &file_stat);
printf("File size : %zd bytes\n", file_stat.st_size);
使用fgetpos(),文件指针必须遍历整个文件(3-10 GB)!!通过简单的系统调用stat/fstat,可以通过结构成员st_size获得大小。使用fstat()
您不想使用
fstat
的任何特殊原因?请参见中的“fgetpos”。我同意您的看法fstat
是一个更好的函数。标准严格规定fgetpos
的返回值必须严格用于fsetpos
fseek()
和SEEK\u END
不是一种便携的处理方式。%d
打印int
,它很可能默认为32位整数,因此无法捕捉off\u t
的全部美,而s.st\u size
恰好是。
File *fd = fopen("filename");
struct stat s;
fstat(fileno(fd), &s);
printf("file size: %lu\n", s.st_size);