4

fread で空のファイルを読み込もうとしています。ブロックサイズ4096、ブロック数40のファイルを作成する前に。現時点では、これらのブロックが「空」であることはわかっていますが、以下のコードのようにファイルを読み取ると、空かどうかわかりません。つまり、 nread が NULL またはそのようなものになることを期待しています。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--;
 }
4

2 に答える 2

1

fread0 が返されたかどうかを確認します。ドキュメントから ( here ):

正常に読み取られた要素の総数が返されます。

于 2013-08-15T14:56:54.603 に答える