Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

1.2.6 scanf

Varsinainen supervaara on scanf. Normaaleissa aliohjelmissa oikein käytettynä kääntäjä osaa varoittaa tyyppivirheestä, mikäli osoitteena esiteltyä parametriä kutsutaan arvolla. scanf on kuitenkin toteutettu siten, että tyypit saavat vapaasti olla mitä tahansa ja unohtuneesta &- merkistä ei kukaan valita.

Lisäksi toinen erittäin vaarallinen tilanne syntyy, mikäli format- osassa on eri määrä parametrejä kuin varsinaisessa parametrilistassa.

Myös parametrin tyypin ja format- osassa olevan formaatin sotkeminen saattaa kaataa koko koneen.

	int i;
	scanf("%lf",&i); /* VÄÄRIN! */ 	:-(

Aina kun kirjoittaa jonkin scanfin sukuisen lauseen, pitää havahtua ja tarkistaa ainakin 3 kertaa lauseen olevan kunnossa. Tämänkin monisteen malliohjelmia kirjoitettaessa scanf on ollut kymmeniä kertoja väärin!


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys