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


Anmelden zum Antworten