我打开了一个二进制文件,如下所示
FILE *p;
p=fopen("filename.format","rb");
如何找到文件的结尾?
答案 0 :(得分:3)
fread函数fread
返回实际读取的字节数。因此,如果读取的字节数低于要读取的字节数,则可能位于文件末尾。
此外,feof
功能还会告诉您是否在文件的末尾。
要找出文件的大小而不实际读取它:
long Size;
FILE *p;
p = fopen("filename.format","rb");
fseek (p, 0 , SEEK_END);
Size = ftell (p) ;
rewind (p);
答案 1 :(得分:-1)
在C ++中,我通常使用ifstream::seekg
跳转到文件的末尾,并为其提供位置的ios::end
参数。 ANSI-C等效seekg
是
int fseek ( FILE * stream, long int offset, int origin );
origin
可以是SEEK_SET, SEEK_CUR, SEEK_END
尝试这个会跳转到文件的末尾:
fseek(p, 0, SEEK_END);
然后,一旦在文件的末尾,只需使用
long int ftell ( FILE * stream );
告诉您的程序文件的结束位置
例如,以下代码将size
变量设置为文件的物理大小(以字节为单位),然后跳回文件的开头:
FILE *p = fopen("filename.format", "rb"); // open binary file fseek(p, 0, SEEK_END); // jump to end of file long int size = ftell(p); // get size of file fseek(p, 0, SEEK_SET); // jump back to beginning of file