000
05.01.2005, 17:36 Uhr
~Tomkay
Gast
|
Hallo zusammen! Die ist mein erster Beitrag im Forum und ich dachte, ich poste mein Probleme euch, weil hier wohl einiges den vollen durchblick haben ! Hab euer Forum schon durchsucht, ob jemand ein ähnliches Prob hatte, aber ich wurde daraus nicht schlau
Also, ich bin Student und muß ein Testatprogramm schreiben! Aufgabenstellung: Schreibe eine Adressverwaltung in C (und nicht C++)! Dazu gehört auch, dass man Adressätze aus einer Datei rauslesen kann...! Z.b:
Mustermann, Hans, In der Au 23, 12345, Entenhausen
Dabei arbeite ich mit Fscanf, lese immer bis zum Komma und speicher den String in einen Characktervektor... soweit so gut, es klappt alles, nur sobald ein Leerzeichen (im Beispiel 'In der Au') auftaucht, ist vorbei... solange die Strasse nur aus einem wort ohne komma besteht, klappt alles!
Hier mal mein Quelltextausschnitt zum auslesen der Daten aus einer Datei:
...
char nname[20]; char vname[20]; char street[30]; char plzahl[7]; char ort[30];
... ...
do { fscanf(datei, "%s , %s , %s , %s , %s\n", nname, vname, street, plzahl, ort);
setnachname(adr, nname, a); setvorname(adr, vname, a); setstrasse(adr, street, a); setplz(adr, plzahl, a); setort(adr, ort, a);
ausgabe(adr + a); a++;
}while(feof(datei) == 0);
ich habe jetzt der Übersicht halber mal das unrelevante weggelassen! Ich lese mit dem Code also immer bis zum komma aus, speicher z.b. den Nachname in einen Charvektor und übergebe diesen an eine weiter Funktion, die diesen Nachnamen in eine Struktur schreibt, die wiederrum Komponenten eines Adressvektors sind... (ich schweife ab :P)!
Zurück zum probleme: Wie kann ich mit fscanf zwischen zwei kommas einen String auslesen, der leerzeichen beinhaltet (oder muß ich fgets benutzten, nur wie würde da der Quellcode aussehen)? Wie gesagt, das programm läuft, nur sobald ein böses Leerzeichen kommt ist ende gelände...
Ich bedank mich schonmal im vorraus - ich hoffe, mir kann jemand helfen!
Gruß Thomas |