fscanf() formatiert nicht nach meinen Wünschen
-
Hallo,
ich speichere in einer Textdatei zeilenweise je 2 char[] und einen Integer getrennt durch Kommas ab.
void zeigeListeSpeichernMenu() { FILE* datei; char dateipfad[255]; printf("Bitte den kompletten Pfad angeben (z.B. c:\\liste.txt): "); scanf("%s", &dateipfad); datei = fopen(dateipfad, "w"); for (i=0; i<anzahlStudenten-1; i++) { fprintf(datei, "%20s,%20s,%10d\n", liste[i].name, liste[i].vorname, liste[i].matrikel); } fprintf(datei, "%20s,%20s,%10d", liste[anzahlStudenten-1].name, liste[anzahlStudenten-1].vorname, liste[anzahlStudenten-1].matrikel); fclose(datei); }
Beim Hereinladen der Daten aus dieser Textdatei nimmt fscanf() jedoch immer diese nervigen Kommas mit, die ich NICHT in meiner Liste sehen möchte (die aber unbedingt in der Textdatei abgespeichert werden sollen).
Eine Textdatei, wie ich sie oben abspeichere hat bsp. dieses Format:
ernie, gebau, 238787 hans, schulz, 221133
Hier ist der Codeteil für das Hereinladen:
void zeigeListeLadenMenu() { FILE* datei; char dateipfad[255]; int zeilen = 0; printf("Pfad zur gespeicherten Liste angeben (z.B. c:\\liste.txt): "); scanf("%255s", &dateipfad); datei = fopen(dateipfad, "r"); while (fgetc(datei) != EOF) { fscanf(datei, "%20s%20s%10d", &liste[zeilen].name, &liste[zeilen].vorname, &liste[zeilen].matrikel); zeilen++; } fclose(datei); anzahlStudenten = zeilen; }
Kann mir da jemand weiterhelfen?
Danke,
Rapthor
-
Was hast du denn erwartet? Das fscanf die Kommas von allein filtert? Wie soll es das denn wissen?
Das wirst du wohl von Hand machen müssen.
-
Benutze fgets um die ganze Zeile zu lesen und dann man: strtok(3) und diese zeile zu parsen