
C - funkcia fscanf ignoruje po cykle nacitanie zo suboru
Dobry den prajem. Robim jednu funkciu v ktorej mam vyhladat isty riadok v subore dajme tomu kazdy 4ty a z neho zobrat hodnotu do premennej typu int. To som vyriesil cez funkciu fscanf. Problem je v tom ze prvy krat mi hodnotu nacita spravne dajme tomu ze v jednotlivych riadkoch su dane hodnoty 4: 1, 8: 0, 12: 1, (v stvrtom riadku je hodnota 1 v osmom 0 atd.) nacita hodnotu 1 a este vykona dajake prikazy co su teraz nepodstatne no ako ide o dalsie 4 riadky na 8. riadok nezoberie hodnotu 0 ale v premennej ostane furt hodnota 1. Kontroloval som program a tie riadky sedia presne to znamena on na tom riadku s hodnotou 0 vazne je ale fscanf akoby neprebehlo. Neviete preco sa to deje? Co moze byt pricina toho ze v cykle vynechava fscanf? daco z bufferom, ci?
Nemyslíš, že by bylo dobré sem dát kód, který používáš? Takto se dá pouze říct, že tam máš něco špatně.
Prepacte ze som neodpovedal skorej nemohol som tu je moj kod funkcie
Scanf medzi tymi forami nacita hodnotu do pola ale uz dalsie nie
Dakujem vsetko slape uz tomu chapem :)
pole je pointer na pointer, ne pointer na to pole !
pole je adresa ddalsieho pointra (ulozene v stacku). Ked napisem pole[0] tak odkazujem na ten pointer. pole[1] ukazuje uplne doprdele (ukazoval by na dalsi pointer, ne na pole!)
ked chces adresovat prvky pola, tak skus
fscanf(fr,"%lf",(*pole)[i]);
resp. oprava, musis urobit adresu toho dalsieho prvku, alebo proste len posunut pointer o i, t.j. bud
fscanf(fr,"%lf",&((*pole)[i]));
alebo lepsie
fscanf(fr,"%lf",(*pole)+i));
Netestoval som to. Ale dost debilne tam pracujes s tym parametrom pole furt.
Dakujem to bolo k tej predchadzajucej odpovedi :)
Hodi mi to warning
warning: format ‘%lf’ expects argument of type ‘double *’, but argument 3 has type ‘double’ [-Wformat=]|
A ak spustim program pri volani funkcii program spadne.
Ano viz moju reakciu nad tymto :)