Veröffentlicht 23. Februar 200520 j Guten Tag! Ich hab ein Problem: Und zwar möchte ich gern Variablen-Werte in einer Datei speichern, so dass ich mein Programm beenden kann und beim nächsten Start wieder mit den alten Werten weiter machen kann. Leider ist das einzigste was ich weiß, wie ich eine Datei erstelle (ohne Inhalt) und wie ich aus einer vorhanden Datei den Inhalt auf dem Monitor ausgebe. Wie kann ich also meine ganzen int-Werte in eine Datei speichern und wie kann ich se wieder zurück in mein programm holen? Über Hilfe wär ich sehr dankbar MfG SBDevil
23. Februar 200520 j Schau Dir die Dokumentation und Beispiele der Funktionen fopen, fclose, fread und fwrite an. Beispiel für fwrite: int a=2; fwrite(&a,sizeof(int),1,streamptr); Beispiel für das Einlesen: int b; fread(&b,sizeof(int),1,streamptr); Damit kannst Du Dein Problem lösen. Die erzeugten Dateien sind allerdings nicht über alle Plattformen hinweg portabel.
23. Februar 200520 j Hallo, Du kannst sowas auch mit fprintf() und fscanf()/atoi() erledigen. Das hat den Vorteil, dass das Fileformat "menschenlesbar" ist und Du dich ggf. nicht mit den "Spezialitäten" unterschiedlicher Architekturen (größe von "int", Byteorder, usw.) bei einer Portierung rumschlagen musst. Nachteil ist, dass mehr Speicherplatz verbraucht wird und das Format dann nicht so kompakt ist. Nic
23. Februar 200520 j Hi, habs jetzt mit dem fwrite probiert ne Variable zuspeichern. Irgendwas hat er auch in der Datei gespeichert... allerdings gibt er beim lesen nur komische Zeichen oder nichts aus! Mein Quelltext sieht ungefähr so aus: FILE *datei; char name[21]; int a=1; void read_char(FILE *stream){ int c; while((c=fgetc(stream))!=EOF) putchar©; } void neu(){ printf("Unter Welchen Namen Soll gespeichert werden? \n"); scanf("%s",&name); getchar(); datei = fopen(name ,"w"); fwrite(&a,sizeof(int),1,datei); } void laden(){ char x[21]; printf("Wie lautet die Datei, die geoeffnet werden soll? \n"); scanf("%s",&x); getchar(); datei = fopen(x ,"r"); if(datei != NULL) read_char(datei); } Mehrere Fragen dazu: Was ist falsch oder was muss ich anders machen? Und wie bekomme ich den Inhalt wieder in a statt ihn auszugeben? Wenn ich mehrere Variablen hab muss ich dann einfach fwrite öfters anwenden nur statt der 1 mit 2,3,4 und so weiter? Über nen Beispiel oder so würd ich mich freuen MfG SBDevil
23. Februar 200520 j Hallo, Du schreibst mit "fwrite()" und liest mit fget© die Bytes einzeln aus der Datei, um sie dann auszugeben. Das funktioniert nicht, da die Formate nicht kompatibel zueinander sind. In Deinem beispiel müsstest Du mit "fread()" das integer wieder einlesen und dann ausgeben. Nic
23. Februar 200520 j Mein Quelltext sieht ungefähr so aus: Ich habe den Quelltext einmal verbessert. fclose nicht vergessen. Ich hab ein paar Kommentare hinzugefügt, wo ich etwas geändert habe. FILE *datei; char name[21]; int a=1; // Funktion read_char gelöscht void neu(){ printf("Unter Welchen Namen Soll gespeichert werden? \n"); scanf("%20s",name); // name ist bereits Pointer, max. Größe angeben getchar(); datei = fopen(name ,"wb"); // b für binär verwenden fwrite(&a,sizeof(int),1,datei); fclose(datei); /Datei schließen } void laden(){ char x[21]; printf("Wie lautet die Datei, die geoeffnet werden soll? \n"); scanf("%20s",x); // x ist bereits ein Zeiger, max. Größe angeben getchar(); datei = fopen(x ,"rb"); // b für binär verwenden if(datei != NULL) { fread(&a,sizeof(int),1,datei); printf("Es wurde folgende Zahl eingelesen: %i\n",a); } fclose(datei); }
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.