Problem mit fwrite
-
Hallo,
ich hab folgendes Problem, ich soll für die FH ne Art Datenbank schreiben mit Nutzern einfügen auslesen usw.
Ich deklariere mir nun nen neuen Typ "Datensatz" und will den in eine Datei schreiben. Das Problem ist das mein Compiler folgendes ausgiebt:Konvertierung des Parameters 1 von 'datensatz' in 'const void *' nicht moeglich
Hier mein Quelltext
#include <stdio.h> FILE *fpt; typedef struct { char name[30]; char matr_nr[30]; char note[30]; } datensatz; void ausgabe(datensatz); datensatz eingabe(int); void main(void) { int n, i; datensatz student[100]; printf("\nStudent erfassen\n\n"); printf("Anzahl der Studenten? "); scanf("%d", &n); for (i=0; i<n; i++) student[i] = eingabe(i); for (i=0; i<n; i++) ausgabe(student[i]); //Datei öffnen fpt=fopen("student.txt", "w"); //in Datei schreiben for (i=0; i<n; i++) fwrite(student[i], sizeof(datensatz), 1, fpt); //Ausgabe Datensatz while (!feof(fpt)) { fread( &student, sizeof(datensatz), 1, fpt); } if ( (fpt=fopen("student.txt", "r")) == NULL ) { printf("Datei nicht vorhanden"); //return(0); } else { } } datensatz eingabe(int i) { datensatz student2; printf("\nName eingeben: "); fflush(stdin); scanf("%s", student2.name); printf("\nMatrikelnummer eingeben: "); fflush(stdin); scanf("%s", student2.matr_nr); printf("\nNote eingeben: "); fflush(stdin); scanf("%s", student2.note); return student2; } void ausgabe(datensatz student3) { printf("\nName: %s", student3.name); printf("\nMatrikelnummer: %s", student3.matr_nr); printf("\nNote: %s", student3.note); }
Danke für eure Hilfe
-
Du mußt die Adresse des zu schreibenden Datenblocks angeben, nicht seinen Inhalt - d.h. "fwrite(student+i,...);" oder "fwrite(&student[i],...);". (aber warum schreibst du nicht das gesamte Array am Stück in die Datei?)