Ich lese eine Binärdatei Byte für Byte, ich muss feststellen, ob eof erreicht wurde oder nicht.
feof() funktioniert nicht, da "eof nur gesetzt wird, wenn eine Leseanforderung für ein nicht vorhandenes Byte gestellt wird". Also, ich kann meine benutzerdefinierte check_eof wie haben:
if ( fread(&byte,sizeof(byte),1,fp) != 1) {
if(feof(fp))
return true;
}
return false;
Aber das Problem ist, wenn eof nicht erreicht wird, wird mein Dateizeiger um ein Byte nach vorne verschoben. Eine Lösung wäre also die Verwendung von ftell()
und dann fseek()
um sie in die richtige Position zu bringen.
Eine andere Lösung könnte darin bestehen, das Byte im Voraus in einem Zwischenspeicher zu puffern.
Gibt es bessere Lösungen?