Unterschiedliche Strukturen als Übergabeparameter für gleiche Funktion?

kannst du da vielleicht ein kurzes Beispiel nennen wie ich sowas deklariere und Daten abspeichere/auslese?

Das Programm läuft immer auf dem selben Rechner und in den Dateien werden lediglich die Einstellungen gespeichert. Dann dürfte das doch keine Probleme machen, oder?

Also schon klar, werde es so bald es geht umschreiben, doch es sollten noch andere Funktionen gecodet werden und ich stehe etwas unter Zeitdruck.
 
Code:
BOOL write_data_struct(struct data* d, FILE* file) {
  fprintf(file, "%s:%d\n", "member1", d->member1);
  fprintf(file, "%s:%s\n", "member2", d->member2);

  fprintf(file, "#\n"); /* Trennzeichen zwischen 2 Einträgen. */

  return !ferror(file);
}

BOOL read_data_struct(struct data* d, FILE* file) {
  char* line;

  while ((line = read_line(file)) != NULL && line[0] != '#') {
    char key[80];
    if (sscanf(line, "%s:", key) == 1) {
      if (strcmp(key, "member1") == 0) {
         if (sscanf(line+strlen(key), "%d", &d->member1) != 1)
           return FALSE;
         } else return FALSE;
    ...
  }
  return !(feof(file) || ferror(file));
}

Das ist jetzt natürlich nicht getestet, aber so ungefähr sollte das funktionieren. Sowas kannst du ja später immer noch machen wenn du jetzt dafür keine Zeit hast. Solange du nichts an den Einstellungen (struct packing) deines Compilers änderst sollte das auch mit fread/fwrite klappen.

Gruß
 
ja gut, aber so muss ich ja jede einzelne Variable meiner Struktur wissen. Wie kann ich das dynamisch machen, sprich wenn mal eine Varialbe dazu kommt das diese automatisch mit abgespeichert und wieder eingelesen wird?
 
Wu-mc hat gesagt.:
ja gut, aber so muss ich ja jede einzelne Variable meiner Struktur wissen. Wie kann ich das dynamisch machen, sprich wenn mal eine Varialbe dazu kommt das diese automatisch mit abgespeichert und wieder eingelesen wird?
Und du müßtest nicht nur den Namen sondern auch den Typ wissen. Und wie bereits gesagt ist das dynamisch in C/C++ nicht möglich.

Gruß
 
ja gut das ist dann halt relativ dünn. Das kann ich vielleicht dann mal machen wenn ich fertig bin und weiß wie die strukturen alle aussehen, aber jetzt ist das blöd, so muss ich ja jedes mal die Struktur und noch die ganzen Funktionen zu Schreiben und Lesen ändern. Das ist der Aufwand momentan noch nicht wert. Trotzdem vielen Dank für deine Hilfe!
 
Zurück