C filepointer rekursiv
-
Ich habe ein Problem mit einer Übungsaufgabe. Ich soll einen Baum in eine Datei speichern, aber das Problem ist der filepointer, denn das auslesen des Baumes geht ja nur rekursiv. Es funktioniert alles, die Datei wird angelegt, aber sie ist immer lehr
So sieht ein Knoten aus:
struct Knoten { char name[20]; struct Knoten* links; struct Knoten* rechts; };
Das hier ist die Funktion:
int speicherBaum(struct Knoten* Baum, char* Dateiname) { FILE *fp; fp = fopen(Dateiname,"w"); schreibBaum(Baum, &fp); fclose(fp); return 0; } int schreibBaum(struct Knoten* Baum, FILE* fp) { fprintf(fp,"%s\n", (*Baum).name); //printf(" %s\n", (*Baum).name); if((*Baum).links!=NULL) schreibBaum((*Baum).links, fp); if((*Baum).rechts!=NULL) schreibBaum((*Baum).rechts, fp); return 0; }
-
Probier mal das:
schreibBaum(Baum, fp);
Zeh Mau
-
Und für "(*Baum).name" etc. gibt es die nette Schreibweise
Baum->name
-
Heute ist bei mir der Wurm drinnen..
Mußte nun zum zweiten Mal diesen Eintrag editieren.Beim ersten Aufruf verwendest du
... Baum, &fp ...
Dort müßte aber ein:
... Baum, fp ...
stehen
Gruß mcr
@edit: dieser Vorschlag wurde ja schon gemacht..
Ich glaube, ich sollte erst mal wach werden.Vielleicht noch etwas zur Erläuterung:
FILE *fp; schreibBaum(Baum, &fp);
Durch &fp erhälst du nun die Adresse auf einen Filepointer, also
vom Typ: FILE **fp;Ich weiß jetzt nicht, welchen Compiler du nimmst. Wenn du deinen Code
mit gcc -W -Wall -pedantic übersetzt, sollte dieser Fehler aber
angezeigt werden.
-
Vielen Dank