Auslesen einer Textdatei mittels fscanf [unter C]

Pheonix_Strike

Grünschnabel
Hallo Community,
ich sitze vor einem Problem undzwar schaffe ich es nicht ganz Zeilen aus einer Textdatei in eine struct zu laden.
Mehrere Tage hatte mich das bereits beschäftigt und bin auch dahingehend angekommen das, dass Programm an der Stelle
die Zeilen liest nur ich schaffe es nicht die Werte für den weiteren Gebrauch in die Struktur zu laden.
Aus dem Grund blieb mir demnach nichts weiter übrig als mich an euch zu wenden.

Es handelt sich im folgenden, um die Funktion pb_load, mit der ich Versuche die Zeilen aus der Textdatei in eine Struktur mittels fscanf zu laden/überführen.

Ich bedanke mich schon mal im Voraus

*reedit
so ich habe es nochmal etwas verändert, undzwar indem ich einen teil von der p_add methode übernommen habe. nichts desto trotz besteht das problem immer noch
 
Zuletzt bearbeitet:
Hi

was ist denn das konkrete Problem?
Willst du noch irgendwas einbauen, wo du nicht weiter weißt?
Compilerfehler? Abstürze? Falsches Programmverhalten? ...

Was mir beim Anschauen der besagten Funktion auffällt:

In diesem Codeteil:
C++:
...
while(!feof(book))  
{	
	if (anfang == NULL)
	{
		if ((anfang = malloc(sizeof(struct Person))) == NULL)
		{
			fprintf(stderr, "Kein Speicher vorhanden");
		}
		else
		{
			fscanf(book,"%s %s %s\n",person2->nname,person2->vname,person2->nmbr);
			anfang->naechste = NULL;
		}
		anfang->naechste = NULL;
...
Die letzte Zeile vom Codeausschnitt hier muss weg.
Wenn das malloc keine Fehler ergeben hat wird das Selbe ja im else drin gemacht,
und falls ein Fehler war würde die Anweisung zu einem Absturz führen.


Das Einlesen der Strings geht nur dann gut, wenn die einzelnen eingegebenen Werte keine Leerzeichen haben (also Vorname, Nachname, und das Nmbr haben in sich keine Leerzeichen)
und wenn jedes der drei Sachen max. 19 Zeichen hat
(MAX=20, dazu Endzeichen am Schluss nötig).
Falls der Benutzer was Unpassendes eingibt gibts auch Probleme
(Folgen nicht genau vorhersagbar).
Man kann das schon sicherer programmieren, aber das später.
Zumindest für passende Eingaben funktionierts.


Und globale Variablen (statt Parameter) und Fehlerausgaben in der Funktion
(statt Fehler-Returnwerten) sind zwar nicht so schön, aber kein Fehler in dem Sinn.
 
das Ding ist einfach das er nun etwas in die Struktur lädt aber wenn ich anschließend 1 wähle nichts ausgegeben wird also es wird schon was ausgegeben etwas ist auch anscheinend in der Struktur weil er dann ja zum else zweig springen würde.
Probier mal die Auswahl 1 dann wirst du vielleicht verstehen was ich meine. Zu aller erst 2 dann speichern auf j, schließe das Programm mit 0 und starte es wieder nun 5. anschließend noch die 1 um die Struktur auszugeben. Genau jetzt müsste genau das passieren was ich versuche zu sagen
und mit letzte zeile meinst du wahrscheinlich "anfang->naechste = NULL"

*reedit
ich habe das Problem behoben undzwar musste in der if statt person2, anfang stehen da ja erst im else zweig person2 = anfang steht.
so nun etwas anderes undzwar kann ich irgendwie nicht mehr als 2 Personen hinzufügen vielleicht weiss ja jemand woran es liegt. Ok das zweite Problem wurde auch gelöst. Danke Sheel für deine Mühe :)
 
Zuletzt bearbeitet:
Zurück