Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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.

Genau sowas hab ich gesucht!

Danke:)

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

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

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

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);

}

Wunderbar jetzt klappt alles!

1000 dank euch Beiden :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.