Zum Inhalt springen

Variablen in Datei schreiben/lesen in C


SBDevil

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...