Witam serdecznie,
moim zadaniem jest "Napisać program, który poprosi użytkownika o podanie danych pięciu osób. Dane te to: imię, wzrost (w cm) i waga (w kg). Dane o osobach należy przechować w zmiennych typu złożonego (struktura). Następnie dane o osobach zapisać do pliku (LPP_8.dat). Przed zapisaniem danych o osobach, należy do pliku zapisać liczbę osób, których dane plik będzie zawierał."
Mój kod wygląda następująco :
#include <stdio.h>
#include <stdlib.h>
struct Dane {
char imie[50];
float wzrost;
float waga;
}s1,s2,s3,s4,s5;
int main(int argc, char *argv[]) {
FILE *fp;
puts("podaj dane 5 osob : imie, wzrost, waga:");
scanf("%s %d %d",&s1.imie,&s1.waga,&s1.wzrost);
scanf("%s %d %d",&s2.imie,&s2.waga,&s2.wzrost);
scanf("%s %d %d",&s3.imie,&s3.waga,&s3.wzrost);
scanf("%s %d %d",&s4.imie,&s4.waga,&s4.wzrost);
scanf("%s %d %d",&s5.imie,&s5.waga,&s5.wzrost);
if((fp=fopen("test_gr3.dat","w"))==NULL){
printf("nie mogę otworzyc pliku test_gr1.txt do odczytu !");
exit(1);
}
int N = 5;
fwrite(&N,sizeof(N),1,fp);
fwrite(&s1,sizeof(s1),2,fp);
fwrite(&s2,sizeof(s2),3,fp);
fwrite(&s3,sizeof(s3),4,fp) ;
fwrite(&s4,sizeof(s4),5,fp) ;
fwrite(&s5,sizeof(s5),6,fp) ;
fclose(fp);
if ((fp=fopen("test_gr3.dat", "r")) == NULL) {
printf ("Nie mogę otworzyć pliku test_gr1.txt do odczytu!\n");
exit(1);
}
char odczyt[101];
while(fscanf(fp,"%100s",odczyt)!=EOF){
printf("%s ",odczyt);
}
return 0;
}
Program nie odczytuje poprawnie w sumie nic.. wychodzą jakieś krzaczki i mnóstwo spacji.
Niestety nie potrafię znaleźć błędu w tym programie.
Miłoby było jakby ktoś mi to wytłumaczył wręcz łopatologicznie, gdzie i czemu program się wysypuje.