C 用fread读取一个空文件

C 用fread读取一个空文件,c,null,fread,C,Null,Fread,我正试图用fread读取一个空文件。在此之前,我创建了块大小为4096、数量为40块的文件。目前我知道这些块是“空”的,但是如果我像下面的代码中那样读取文件,我无法判断它是否为空。我的意思是我期望nread为空或者类似的东西。 你知道我要拿nread和什么做比较吗?谢谢大家! int test() { char buf[4096]; FILE *file; size_t nread; file = fopen("out/abc.store", "r"); if

我正试图用fread读取一个空文件。在此之前,我创建了块大小为4096、数量为40块的文件。目前我知道这些块是“空”的,但是如果我像下面的代码中那样读取文件,我无法判断它是否为空。我的意思是我期望nread为空或者类似的东西。 你知道我要拿nread和什么做比较吗?谢谢大家!

int test()
{

   char buf[4096];
   FILE *file;
   size_t nread;

   file = fopen("out/abc.store", "r");
   if (file) {
       while ((nread = fread(buf, 1, sizeof buf, file)) > 0)
          fwrite(buf, 1, nread, stdout);
      if (ferror(file)) {
      /*error handling*/
   }
   fclose(file);
}
编辑:

我创建的文件如下所示:

char *content=(char*)malloc(uintBlockSize*uintBlockCount);
memset(content,0,uintBlockSize*uintBlockCount);
...
 while (i!=0)
 {
   check=fwrite(content,uintBlockSize, 1, storeFile);
   if (check!=1)
       return 1;
   i--;
 }

检查
fread
是否返回0。从文档()中:

返回成功读取的元素总数


fread将返回成功读取的元素数,因此在本例中,fread将返回0(假设它没有读取任何内容),如果是结束,则返回EOF。

如果创建的文件大小大于零,它不是空的。告诉我如何删除这个问题:D问题的正下方应该有一个删除链接。请不要故意破坏你的问题。如果你想删除它,请给出一个很好的理由。:S我想我的问题出了错,文件不是空的。但是我创建它就像我在编辑中写的一样。它不会返回零。它将返回4096,并将返回40次。很抱歉,我可以以某种方式删除此问题吗?@user2430568-是的,您可以删除自己的问题。或者你可以编辑它来澄清你的问题。那么我如何删除它呢?