Frage

Ich habe eine Frage:

Ich verwende den Fread, um eine Datei zu lesen.

generasacodicetagpre.

Verwenden einer Schleife, fordert diesen Anruf nacheinander auf, um mich meine gesamte Datei zu lesen.

Was passiert, wenn ich in der Nähe des Endes der Datei komme, und ich kann nicht "Größe" * SizeOf (REAM) lesen, oder wenn Sie nur zur Hälfte dieses Betrags lesen können, was passiert mit meinem Array A.Es wird abgeschlossen sein?Die Funktion gibt einen Fehler zurück?

zu wissen, wie die Datei vom Fread durchgelesen wurde?

edi1: Genau, wenn die Division nicht genau ist, wenn ich die letzte bisschen kleinere Dateigröße las, dass ich Dinge lesen, die nicht auf der Datei sind, ich frage mich mit meiner Vektor-Größe auf die Menge der Bytes, die ichkann einen dynamischen besser lesen oder entwickeln.

War es hilfreich?

Lösung

farbe gibt die Anzahl der gelesenen Datensätze zurück.Alles, was jenseits in Ihrem Puffer ist, kann mit Mangled sein, verlassen Sie sich nicht auf diese Daten.

fead gibt die Anzahl der tatsächlich gelesenen Punkte zurück, was möglicherweise sein kann weniger als Zähler, wenn ein Fehler auftritt oder wenn das Ende der Datei ist vor dem Erreichen der Zählung aufgetreten.

Die Funktion wird nicht über das Ende der Datei gelesen: Das wahrscheinlichste Ereignis ist, dass Sie einen Bündel voller Puffer und dann einen (endgültigen) Teilpuffer lesenLänge.

Ihre Logik muss sich in der Rolle unterhalten - die Dateigröße gibt Ihnen die erwartete Gesamtzahl der Datensätze, sodass keine nachlaufenden Daten im Puffer (nach dem endgültigen fread-Anruf) nicht ignoriert werden soll, der uneinheitliche Datensätze entspricht.Eine auf dem Lesen des Zählers verbleibende Aufzeichnungen wären ein Ansatz.

Andere Tipps

fread() gibt die Anzahl der Elemente zurück, die er lesen konnte.Sie müssen also den Rückgabewert von fread() überprüfen, um herauszufinden, wie viele Elemente in Ihrem Array gültig sind.

Es wird eine kurze Elementzahl oder Null zurückgeben, wenn entweder ein Fehler aufgetreten ist oder den generationspflichtigen oder generationspflichtigen Teilen erreicht ist.Sie müssen in diesem Fall EOF-ond feof() verwenden, um zu überprüfen, welche Bedingung erfüllt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top