Kezdőoldal » Számítástechnika » Programozás » Szoveg ignoralasa, ha int-et...

Szoveg ignoralasa, ha int-et akarok bekerni C-ben?

Figyelt kérdés
Hogyan lehet megoldani hogy ha egy int-et varok a usertol akkor ne lehessen szoveget beirni? Tehat amig az ertek nem int addig folyamatosan kerje be. Koszonom
2018. márc. 15. 19:27
 1/2 anonim ***** válasza:

scanf() visszatérési értéke a bekért változók száma


szóval valami ilyesmi


while(!scanf("%d", &var) ) {}


printf("%d\n", var);

2018. márc. 15. 20:46
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:

#1 Nem egészen. A scanf-el annyit olvas be a program a bufferből, amennyit rá tud illeszteni a patternre, a többit otthagyja. Magyarul az a rész, amit nem tudott ráilleszteni, az ott marad a bufferben, és a következő iterációban ugyanazt próbálja újra beolvasni, és újra, és újra, egy végtelen ciklust létrehozva.


Ha nem sikerül számot beolvasni, akkor ki kell üríteni az input buffert, vagy a végére lépni.


1. fseek()-el az input buffer végére lépsz, így a bentmaradt szöveg nem fog bezavarni a következő olvasásnál:

fseek(stdin,0,SEEK_END);


2. Alternatívaként karakterenként végigléphetsz az input bufferen, amíg a végére nem érsz:

int ch;

while ((ch = getchar()) != '\n' && ch != EOF){}


Utóbbi tekinthető megbízhatóbbnak, még ha kicsit clumsy is a szisztéma, hogy egyesével végiglépkedünk az inputon.

2018. márc. 15. 22:49
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!