Struct mit Pointer datei speichern
-
hi,
hab folgendes Prob.
habe einen Struct mit char Pointern
z.B
struct Test
{
char* test;
}nun gebe ich für test etwas ein und will dies eine datei speichern, nur funktioniert das nicht richtig
das eingeben und speichern sieht bei mir so aus:
FILE* dat;
Test t;char buffer[256];
dat=fopen("c:\\data.dat","ab");
cin>>buffer;
t.test = new char[strlen(buffer)+1];
strcpy(t.test,buffer);
fwrite(&t,sizeof(t),1,dat);
fclose(dat);wenn ich im struct die char variable gleich mit einer größe festlegen funktioniert es natürlich
hat einer ne ahnung warum das net geht oder mach ich was falsch?? oO
-
Im struct selber steht nur die Adresse deiner eigentlichen Daten - wenn du die speicherst und beim nächsten Programmstart wieder lädst, kann nur Müll herauskommen. Du mußt schon dem Zeiger zu deinen echten Daten folgen - und diese speichern/lesen.
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum MFC (Visual C++) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
aso
wie mussn das ungefähr aussehen damit ich mir das mal genauer veranschaulichen kann???
danke dir ^^
-
fwrite(t.test,strlen(t.test),1,dat);
(eventuell solltest du die Länge auch gleich mitspeichern, das erleichtert das spätere Einlesen)
-
aber wenn ich da mehrere variablen hab muss ich das ja für jede einzeln machen oO oder?
-
Ja, da bleibt dir nichts anderes übrig - wenn dir das zu viel Aufwand ist, kannst du dir eine write_test() und read_test() schreiben, die diesen ganze Aufwand kapseln.
-
hab das mal so probiert:
fwrite(t.test,strlen(t.test),1,dat);
das funktioniert aber auch nicht wiklich oO
-
Wenn du einen C99-Compiler hast (was ich nicht glaube, da dein Code oben mit einem C++-Compiler übersetzt wird), wären hier flexible array members gut geeignet.
Du solltest dich aber, unabhängig von diesem Problem hier, entscheiden ob du nun C oder C++ lernen willst. Den C/C++-Mischmasch den du gerade baust wird weder der einen noch der anderen Sprache gerecht.
-
++ find ich an dieser stelle unnötig, dafür ist das Porgramm zu unkomplex -.-
im prinzip soll es nur daten aufnehemen und in eine datei schreiben und damit die datei nicht unendlich riesig wird, wollt ich das mit Pointer machen und nicht gleich mit arrays.
-
Ich habe den Eindruck, dass du flexible array members noch nicht ganz verstanden hast.