12.07.2015 Views

Programski jezik C - Pmf

Programski jezik C - Pmf

Programski jezik C - Pmf

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.4. FUNKCIJA SCANF 895.4.7 Povratna vrijednostFunkcija scanf vraća broj uspješno učitanih podataka ili EOF. Tu činjenicumožemo iskoristiti za provjeru jesu li svi traženi podaci učitani. Uzmimo jedanprimjer u kojem učitavamo i procesiramo samo pozitivne cijele brojeve.Kôd bi mogao izgledati ovako:int n;scanf("%d",&n);while(n >= 0){// radi nesto s brojemscanf("%d",&n); // ucitaj novi broj}Ovakav kôd ne može uspješno tretirati slučajeve u kojima korisnik učinigrešku priklikom upisa (npr. upiše slovo).Ponašanje programa možemo popraviti ako ispitujemo da li je funkcijascanf uspješno učitala broj. To možemo učiniti testom scanf("%d",&n) ==1. Nova verzija programa bi glasilaint n;while(scanf("%d",&n) == 1 && n >= 0){// radi nesto s brojem}Uočimo da prvo ispitujemo je li broj dobro učitan. Ako nije, n >= 0 nećebiti ispitivano.No program bi trebao kod neuspješnog upisa zatražiti od korisnika daponovi upis. Da bismo to realizirali uočimo da funkcija scanf nakon neuspješnogpokušaja čitanja nekog podatka prekida čitanje i ostavlja taj podataki sve iza njega u ulaznom spremniku. Stoga je potrebno prije novog pozivafunkciji scanf isprazniti spremnik. To možemo učiniti pomoću funkcijegetchar. Mi ćemo, štoviše, iskoristiti sadržaj spremnika da obavijestimo korisnikao grešci koju je napravio, Budući da kôd postaje kompleksniji možemopostupak čitanja broja zatvoriti u jednu funkciju koju ćemo nazvati get int.int get_int(void){int input;char ch;while(scanf("%d",&input) != 1)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!