Ich habe Probleme beim Speichern und Laden von Daten aus der TXT-Datei in das dynamische Array.Laden der Struktur aus der TXT-Datei in das dynamische Array
Mein ganzes Programm basiert auf switch statement. Ich werde nur hier einfügen, die für die Zuweisung von Speicher für Array und Aufruf von Funktion verantwortlich ist, um es mit Struktur zu füllen. Und Funktionen zum Speichern und Laden von Daten.
Code wie folgt aussieht
case 1:
system("cls");
printf("Enter amount of students you want to put in data base\n");
scanf("%d",&number_of_students);
student=(data*)malloc(number_of_students*sizeof(data));
adding_students_to_base(number_of_students); // its a simple functions based on for loop. I don't think that posting it here is necessary
break;
und Funktionen: (. Funktion saving_base_to_file nimmt number_of_students als Eingabeargument)
void saving_base_to_file(int amount_of_students)
{
FILE *file;
system("cls");
printf("Saving base to file!\n");
file=fopen("database.txt","wb");
fprintf(file,"%d",amount_of_students); // function also saves amount of students in base
fwrite(student,sizeof(data),amount_of_students,file);
fclose(file);
_getch();
system("cls");
}
void loading_base_from_file()
{
FILE *file;
system("cls");
printf("Reading base from file\n");
file=fopen("database.txt","rb");
if (file!= NULL) {
fscanf(file,"%d",&number_of_students);
fread(&student,sizeof(data),number_of_students,file); //number_of_students is global variable
student=(data*)malloc(number_of_students*sizeof(data));
fclose(file);
}
else
{
printf("File does not exist!.\r\n");
printf("File have to be named ""database.txt"" !!!\n");
}
_getch();
system("cls");
}
Problem erscheint, wenn ich möchte, dass meine "loading_base_from_file" verwenden, Funktion
Zum Beispiel, wenn ich wan t um einen Schüler mit student_id "123456" namens "Greg" "Tesla" zu speichern, enthält die Datei dies: database.txt. Die Funktion saving_base_to_file speichert auch die Anzahl der Schüler in der Basis. Aber wenn ich wieder mein Programm starten (oder tut es in einem Programmlauf) und versuchen Sie laden Daten aus der Datei zu tun, meine Funktion „print_base“ druckt diese: result
Ich denke, dass es ein Problem mit „Putting“ -Daten in Array, aber ich weiß nicht, was genau falsch ist. Können Sie mir sagen, warum das passiert und wie es zu beheben?
Die Verwendung von 'fscanf/fprintf' und' fread/fwrite' auf demselben Datei-Handle ist schwierig, keine schlechte Idee zu sagen. – alk
Wirf nicht das Ergebnis von 'malloc' & friends in C! – Olaf