Parsing einer TXT-Datei

8

Ich versuche, eine TXT-Datei zu analysieren, die Namen in folgendem Format enthält:

%Vor%

Dies ist der Code, den ich geschrieben habe:

%Vor%

Jeder alternative Aufruf von fscanf gibt mir einen Namen, während der andere beim Abholen eines Kommas verschwendet wird. Ich habe verschiedene Formate ausprobiert, aber ich kann nicht herausfinden, wie es geht.

Kann mir jemand mit dem richtigen Format helfen?

    
xylon97 11.10.2013, 06:01
quelle

4 Antworten

3

Das Ändern der Eingabeformat-Zeichenfolge in "%*[,\"]%[^\"]" würde tun, was Sie wollen:

%Vor%

Das %* überspringt nur die passende Eingabe.

    
villekulla 11.10.2013, 13:26
quelle
3

Ich möchte immer strtok() oder strtok_r() function verwenden, um eine Datei zu analysieren. (entweder bevorzugen Sie eine csv-Bibliothek).

Aber nur zum Spaß habe ich einen Code geschrieben, vielleicht magst du es, ich poste keinen Code in meiner Antwort, aber überprüfe @ Codepad Ausgabe, Funktioniert nur für bestimmtes Format.

Verwenden von strtok ()

Der richtige Ansatz sieht für mich so aus:

%Vor%

Überprüfen Sie Codepage für die Ausgabe:

%Vor%

Was ich im zweiten Code vorschlage, zeichne eine äußere Schleife, um Zeilen von der Datei in einen temporären Puffer zu lesen, dann verwende strtok () Code wie oben: while(fgets(fp, csv, sizeof(csv))){ use strtok code}

    
Grijesh Chauhan 11.10.2013 06:50
quelle
2

Sie müssen fseek () verwenden.

Dieser Code funktioniert erfolgreich:

%Vor%     
Nandakumar Edamana 11.10.2013 06:41
quelle
1

Sie können strtok() verwenden lese ganze Zeile und teile sie in Token mit der Delin-Zeichenkette ","

%Vor%

Hinweis: Die Funktion strtok() verwendet beim Parsen einen statischen Puffer, sodass sie nicht Thread-sicher ist. Verwenden Sie strtok_r() , wenn dies für Sie von Bedeutung ist.

siehe man strtok_r

    
Gangadhar 11.10.2013 06:32
quelle

Tags und Links