如何找到二进制文件的结尾?

时间:2014-03-06 13:35:48

标签: c file fopen

我打开了一个二进制文件,如下所示

FILE *p;
p=fopen("filename.format","rb");

如何找到文件的结尾?

2 个答案:

答案 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