バイナリ ファイルを 4 バイトのチャンクで読み込もうとしています。ただし、最初の実装 (以下を参照) では、最後のエントリが複製され、最後のエントリのみが複製されます。
FILE* f = fopen("test.a", "r+b");
char buffer[4];
while (!feof(f)) {
fread(buffer, 4, 1, f);
printf("read %x\n",*(int*)buffer);
}
fclose(f);
この代替実装には、その問題はありません。feof はいつ使用する必要がありますか? また、以前の実装で feof を使用すると、最後のエントリが 2 回読み取られるのはなぜですか? printf ステートメントで行ったように、ポインターをキャストするよりもバッファーを構築するためのより良い方法はありますか? このコードに他に何か問題はありますか?
FILE* f = fopen("test.a", "r+b");
char buffer[4];
while (fread(buffer, 4, 1, f)) {
printf("read %x\n",*(int*)buffer);
}
fclose(f);