Formatiert einlesen

Ich habe mit dem C-Programmieren begonnen, als die Compiler das noch nicht unterstützen. Seitdem habe ich immer so sehr auf diese Problematik aufgepasst, dass ich nicht bemerkt habe, dass die Compiler dies mittlerweile unterstützen. Außerdem arbeite ich dann so konzentriert, dass mir solche Fehler nicht unterlaufen. Klingt angeberisch, ist aber so.
Außerdem arbeite ich praktisch nie direkt mit csv-ähnlichen Dateien. Wenn ich eine solche Problematik habe, dann nutze ich Datenbankklassen, um derartig strukturierte Daten einzulesen, zu bearbeiten und zu speichern. Ansonsten verwende ich XML. Allerdings ist ein Neuling mit dieser Thematik schnell überfordert.
Aber mit dem rumraten hast du in diesem Fall ein bißchen recht. Mit der Priorität von Operatoren habe ich mich nie so genau beschäftigt, weiß aber, dass das manchmal eine Fehlerquelle sein kann. Hier allerdings nicht.
Das mit dem fehlenden regulären Ausdruck war ein Flüchtigkeitsfehler von mir. Sorry. Natürlich funktioniert deine Lösung. Zumindest bei mir.
 
Hey Leute,

also ich hab das jetzt durch nachlesen und rumprobieren hinbekommen. Auch dank eurer Hilfe.

Als erste hab ich die Textdatei ändern müssen, damit das erste Wort auch als String eingelesen werden kann.

Code:
Meyer ,2,03.04.1985
Schmitt ,4,04.06.1984
Bauer ,5,21.06.1986

Hier wurde hinter jedem Namen, ein Leerzeichen eingefügt (\0) damit fscanf erkennt dass der String fertig ist.

Das nächste war, dass ich wie Deepthroat es vorgeschlagen hat, den Adressoperator verwende. War mir am Anfang bissl komisch vorgekommen, aber im Grunde ist es ja klar... Es ist ja ein Array vom Typ Student, welches Int variablen enthält... Hatte ich irgendwie ganz ignoriert oder wegen falschem denken weggelassen.

Fakt ist, dass es mit dem Format oben und dem Folgenden Fscanf richtig funktioniert:

Code:
fscanf(datei, "%s,%d,%d.%d.%d\n", studi[i].name, &studi[i].semester, &studi[i].geburtstag.tag, 
&studi[i].geburtstag.monat, &studi[i].geburtstag.jahr)

Danke für eure Hilfe!

Gruß,

Mileu
 
Zurück