fscanf/fgets oder doch was anderes?

meberhard

Grünschnabel
Hallo zusammen,
möchte gerne einen Namen aus einer Datei lesen, hab hierzu die folgenden Zeilen geschrieben. Mein Fehler dabei: die Prüfung ob im Buffer genügend Platz für die gelesenen Zeichen ist geschieht erst nach dem Lesen weshalb es auch bei einem Overflow knallt.
UCHAR8 field_name[MAX_STRING_LENGTH];
rc = fscanf(file, " = %[^\r\n] \r\n", name);
TEST_STRING_LENGTH(name, MAX_STRING_LENGTH);

Kann mir einer von euch weiterhelfen wie ich das Problem am einfachsten/schönsten lösen kann? Besten Dank für eure Vorschläge.

Martin
 
Hi.

In C++ würde ich einfach getline und std::string verwenden.

In C könntest du fgets nehmen und im Anschluss prüfen, ob ein Newline gelesen wurde - was bedeutet das die Zeile in den Buffer gepasst hat, sonst war die Zeile zu lang.

Liest du eigentlich die Datei im Binärmodus? Wenn nicht kannst du dir das \r sparen.

Gruß
 
Zurück