zdravim, neviem si rady s tymto problemom:
Potrebujem nacitat cisla zo vstupu, koniec vstupu je dany bud hodnotou 0 alebo nieje dany nijak(EOF) ?
priklad vstupu: 37.57 1 5 5 0
2.priklad vstupu: 27.52 10 5 10 2 0.01 0.01 0.05 0.05 0.20 0.20
moj kod:
for (int i=0; value!=0 || (EOF); ){
scanf("%f",&value);
suma+=value;
}
PS: s premennou value potrebujem v tom cykle for vykonat este nejake dalsie operacie
C koniec suboru (EOF)
-
lowmanek
Light Professional
- Príspevky: 977
- Registrovaný: 04 apr 2010, 8:53
- Bydlisko: 221B Baker Street
Re: C koniec suboru (EOF)
Tvoj kod je uplne zly a v takomto pripade sa for-cyklus rozhodne nepouziva. Navyse konstanta EOF je system defined a mala by byt nejake zaporne cislo, takze v tvojej podmienke by EOF bolo vzdy vyhodnotene ako true.
Da sa pekne vyuzit, ze scanf vracia pocet nacitanych hodnot, teda ak nenacita ziadnu, vrati 0.
Preto:
Da sa pekne vyuzit, ze scanf vracia pocet nacitanych hodnot, teda ak nenacita ziadnu, vrati 0.
Preto:
Kód: Vybrať všetko
while (scanf("%d", &i) && i != 0) {
urobNieco(i);
}Re: C koniec suboru (EOF)
sorry, ale ani tvoj kod nebol uspesny, bola este potrebna mensia uprava:
Kód: Vybrať všetko
while (scanf("%d", &i)!=(EOF) && i != 0) {
urobNieco(i);
}
-
lowmanek
Light Professional
- Príspevky: 977
- Registrovaný: 04 apr 2010, 8:53
- Bydlisko: 221B Baker Street
Re: C koniec suboru (EOF)
Aha, my bad, zabudol som, že scanf sice vráti počet úspešne načítaných prvkov, ale ak nemá aké čítať, nevráti 0 ale EOF. Tvoj kód je validný, ale závotrky pri EOF byť nemusia.