Daten in Datei speichern

D34DL1NES

Erfahrenes Mitglied
Hallo,
seit einiger Zeit sitze ich nun schon an einer Konsolenanwendung, welche ich mit C programmiere. Nun komme ich nicht weiter. Meine Frage:

Das Programm soll den Benutzer eine art Multiple-Choice Test abfragen. Der Benutzer soll die möglichkeit haben diesen Test mit dem Programm selbst zu erstellen. Er wird nach anzahl der Fragen, den Fragen, 3 Antwortmöglichkeiten und nach der Nummer der richtigen Antwort/en gefragt. Nun möchte ich das die gesammelten Daten in einer Datei abgespeichert werden. Das Programm sollte allerdings in der lage sein, diese Daten später wieder auszulesen.

Ich habe mir das etwa so vorgestellt:
Code:
FILE* file;
	char* dateiname;
	dateiname=(char*) malloc(256*sizeof(char));
	printf("Unter welchem Dateinamen soll ihre Datei abgespeichert werden?\n");
	scanf("%s",dateiname);
	file=fopen(dateiname,"w");

	fprintf(file,/*Fragen, Antworten und richtige Antworten in brauchbarer Form abspeichern*/);

Hat vielleicht jemand eine sinnvolle Idee, wie ich die Datei abspeichern bzw. importien sollte? Schon mal vielen Dank :D
 
So könnte es Funktionieren (keine Garantie):
C:
  FILE *file;
  char dateiname[256], frage[500], antwort[3][500], end;
  int richtig;
  do {
    printf("Frage: \n");
    gets(frage);
    printf("\n1. Ant: ");
    scanf("%s", &antwort[0][0]);
    fflush(stdin);
    
    printf("\n2. Ant: ");
    scanf("%s", &antwort[1][0]);
    fflush(stdin);
    
    printf("\n3. Ant: ");
    scanf("%s", &antwort[2][0]);
    fflush(stdin);
    
    printf("\nrichtige Ant.? Nr: ");
    scanf("%d", &richtig);
    fflush(stdin);
    
    printf("\nnoch eine Frage (j = ja n = nein): ");
    getc(stdin);
    fflush(stdin);

  } while (end == 'n');
  printf("\nDateiname: ");
    gets(dateiname);
    file = fopen(dateiname, "w");
    fprintf(file, "%s#%s#%s#%s#%d\n", frage, antwort[0], antwort[1], antwort[2], richtig);
    fclose(file);

Ist auch nicht Optimal, könnte noch schöner sein! Aber ein Anfang!
Und Auslesen kannst du dann Zeilen Weise und dann immer die # rauten von einander trennen!

Gruß XeoX
 
Ok, habs mal ausprobiert. Nach längerem rumprobieren hats dann auch recht gut funktioniert. Im grunde ist nun alles klar, bis auf die tatsache, das ich nicht weis, wie ich die datei dann wieder einlesen kann. Hierbei soll der Benutzer nun abgefragt werden. Wie kann das Programm nun erkennen welche ANtwort richtig ist um die Auswertung anzufertigen?
 
Ok änder die Zeile um in die Datei Schreiben so ab:
C:
fprintf(file, "%-500s#%-500s#%-500s#%-500s#%d\n", frage, antwort[0], antwort[1], antwort[2], richtig);

Dann kannsu du so wieder ein Lesen:
C:
void zeichenloeschen(char*);
int main (){
  FILE *file;
  char frage[500], ant[3][500];
  int richtig;

  file = fopen("Frage.txt","r");
  fgets(frage, 502, file);
  zeichenloeschen(frage);
  
  fgets(ant [0], 502, file);
  zeichenloeschen(ant[0]);

  fgets(ant [1], 502, file);
  zeichenloeschen(ant[1]);

  fgets(ant [2], 502, file);
  zeichenloeschen(ant[2]);

  fscanf(file,"%d",&richtig);

  printf("%s\n%s\n%s\n%s\n%d\n", frage, ant[0], ant[1], ant[2], richtig);
  fclose(file);

  return 0;
}

void zeichenloeschen(char *string){
  int index;
  for (index = 0; index < 501; index++){
    if (string[index] == ' ')
      if (string[index+1] == ' ')
        string[index+1] = '\0';
  }
}

Ist nicht Perfekt und Übernehme keine Garantie dafür das es klappt, aber sollte wenn du die erste Änderung gemacht haben solltest!

Gruß XeoX
 

Neue Beiträge

Zurück