Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » fscanf - leerzeichen (wiedermal)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.01.2005, 19:07 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


am einfachsten ist immer einen datensatz in eine zeile geballert ist...
zum einlesen dann die zeile komplett einlesen (z.b. mit fgets und ggf wenn das zeilenende noch nicht erreicht ist speicher nachallokieren) und dann strtok verwenden....
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 05.01.2005 um 19:08 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: