Habe da ein Standardausleseprogramm:
1 | struct liste{ |
2 | char Name[NAME_MAX]; |
3 | long Anzahl; |
4 | char Artikelnummer[ARTIKEL_MAX]; |
5 | };
|
6 | |
7 | typedef struct liste EINLAUFSLISTE |
8 | |
9 | int main(){ |
10 | |
11 | EINKAUFSLISTE meineLste[10]; |
12 | |
13 | if(eingabe == AUSGEBEN) |
14 | show(&meineListe[0]); //Zeige gesamte Liste an |
15 | else if(eingabe == HINZUFUEGEN) |
16 | putItem(&meineListe[0]); |
17 | else if(eingabe == 8) |
18 | save(&meineListe[0]);//speichern |
19 | else if(eingabe == 9) |
20 | read(&meineListe[0]);//lese |
21 | }
|
22 | |
23 | |
24 | void save(EINKAUFSLISTE *liste){ |
25 | FILE *datei; |
26 | if( (datei = fopen("einkaufsliste.bin", "w")) == NULL) |
27 | printf("Fehler beim oeffnen der Datei"); |
28 | else{ |
29 | //Schreibe
|
30 | fwrite(liste, sizeof(EINKAUFSLISTE), 10, datei); |
31 | fclose(datei); |
32 | printf("\nsaved!\n"); |
33 | }
|
34 | }
|
35 | |
36 | void read(EINKAUFSLISTE *liste){ |
37 | FILE *datei; |
38 | if((datei = fopen("einkaufsliste.bin", "r")) == NULL) |
39 | printf("Fehler beim oeffnen der Datei"); |
40 | else{ |
41 | //Lese
|
42 | fread(liste, sizeof(EINKAUFSLISTE), 10, datei); |
43 | fclose(datei); |
44 | printf("\nread!\n"); |
45 | printList(liste); |
46 | }
|
47 | }
|
fwrite schreibt richtige Werte in das File, jedoch fread ließt nur das erste Element aus. Was simmt nicht?