Miért kell a scanf ("%*s")?
int i;
printf("Adj meg egy egesz szamot! ");
while(scanf("%d",&i)!=1){
fprintf(stderr,"Nem szam.\n");
scanf("%*s");
printf("Adj meg egy egesz szamot! ");
}
Ez a kis programocska annyit csinál, hogy nem hagy békén, amíg nem adsz meg neki rendesen egy egész számot. A scanf("%*s") bekér egy értéket, de nem menti el azt. Ha ez nincs benne a programban, akkor végtelen ciklus lesz. Viszont én nem értem miért. Ha csak beírok egy értéket, és nem őrzi meg, akkor mi haszna van, és miért nem működik a program nélküle?
Ha nem sikerül a beolvasás %d-ba, akkor ott marad a bemeneten az input és újra és újra azt próbálja majd sikertelenül számként beolvasni.
Az input maradt szemetet dobja el az a scanf, hogy tiszta lappal indulhasson a következő bekérés.
Köszönöm a gyors választ!
Tehát ha mondjuk beírom, hogy b akkor az i változóban lesz egy b betű, de a scanf(%*s) kitörli onnan. Ha elhagyom, akkor viszont ott marad a b az i változóban míg világ a világ, és szegény ciklus sziszifuszi munkára van ítélve?
ÓÓ értem már! Köszönöm!
Akkor így néz ki a dolog: Billentyűzet --> input --> "i" változó . Az én szerencsétlen b betűm meg ottragad az inputon, és minden egyes ciklus újrafutásnál a program megpróbálja beletuszkolni az i változóba sikertelenül.
Az input ebben az esetben egy változószerű valami a memóriában, ahol ideiglenesen eltárolódik az adat?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!