fwrite schreibt nur einen wert korrekt
-
Hallo..
Ich habe
- einen Zeiger auf den Anfang eines Speicherbereiches den ich zuvor angelegt habe
- die größe des bereiches
- die anzahl der datenobjekte die reingeschreben werden sollen
- einen filepointernun möchte ich das mit fwrite machen ABER er schreibt nur die erste in den speicherbereich eingelesene variable z.b (hallo) und dann nur noch wirre zeichen.
fwrite(studenten,sizeof(student),n,fp);
studenten vom typ student, den ich zuvor mit typedef festgelegt habe (er beinhaltet char, long, float)
was habe ich falsch gemacht?
-
Zeig doch mal mehr Code!
-
typedef struct{ char nachname[30]; long matrNr; float note; }student; int main (void){ int n=3; FILE *fp; int h; student *studenten; studenten = (student*) malloc(n*sizeof(student)); if (studenten == NULL){ printf("Fehler--Speicher konnte nicht allokiert werden"); } dateneinlesen(n,studenten); if( (fp = fopen("NOTEN", "a")) == NULL ){ printf("Fehler beim ?ffnen der Datei\n"); } h=fwrite(studenten,sizeof(student),n,fp); printf("\n\n%i",h); fclose(fp); fflush(stdin); getchar(); free(studenten); return(0); }
-
das problem bei dir ist dass du ein array von structs hast
Du solltest es anders machen eventuel mit fprintf und mit einer schleife.
. . . for(i=0;i<n;i++) { fprintf(fp, "Name: %s\nMatrikelnummer: %d\nNote: %f\n",student->nachname student->matNr student->note); } . . .
-
ah super --