
C - struktury
Ahoj chcel som aby mi program nacital zo suboru par udajov, ale vypisuje mi to chybu neviete vcom je prosim vas problem?:
1. Warning: format '%f' expects argument of type 'float *',but argument 5 has type 'double'
2. Warning: format '%d' expects argument of type 'int *',but argument 6 has type 'int'
druh je premenna typu char, kontinent tiez, hmotnost je float a mladata int.
Tu je riafok kde je chyba:
while(fscanf(fr,"%14s %9s %f %d\n",(zvierata+pocetZvierat)->druh,(zvierata+poce tZvierat)->kontinent,(zvierata+pocetZvierat)->hmot nost,(zvierata+pocetZvierat)->mladata)!=EOF)
fscanf potrebuje adresu. T.j. &(zvierata+pocetZvierat)->hmotnost atd.
Ta chybova hlaska ti to pise uplne jasne.
BTW. nie som si isty ci %f neni float a ty mas double, ale u modernych compilerov je tusim %f double. Najprv nechaj %f a ak ti bude blbo nacitavat ten double tak to zmen na %lf.
A ten druh a kontinent musia mat uz naalokovane miesto, t.j. bud ako staticke pole v strukture ako char druh[nejakavelkost]; alebo dynamicky, a u nich uz nepouzivas &, ptz oni sami su uz adresa na ten buffer pre retazec char-ov
BTW. ja osobne sa cely zivot vyhybam fscanf, ptz je to nebezpecne a nekontrolujes syntax. Slusny program si parsuje sam znak po znaku aby vedel reagovat v pripade problemu a aby si nepoprepisoval buffre v pamati.