バイナリファイルをバイトごとに読み取っています。eofに到達したかどうかを判断する必要があります。
feof()は、「存在しないバイトの読み取り要求が行われた場合にのみeofが設定される」ため機能しません。したがって、次のようなカスタムcheck_eofを使用できます。
if ( fread(&byte,sizeof(byte),1,fp) != 1) {
if(feof(fp))
return true;
}
return false;
ただし、問題は、eofに達しない場合に、ファイルポインタが1バイト先に移動することです。したがって、解決策は、使用ftell()
しfseek()
てから正しい位置に配置することです。
別の解決策は、一時的なストレージにバイトをバッファリングすることです。
より良い解決策はありますか?