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 filepointer

    nun 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 -- 🙂


Anmelden zum Antworten