IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Getchar()

Aktivity
Avatar
Kubas129
Člen
Avatar
Kubas129:26.11.2018 19:03

Ahoj, prosím
Jak vymažu klávenicový buffer?
že já mám v programu jednou getchar(), který mi načítá po znak }
a pak potrebuju mit jeste jeden ale ten bezi zase od pocatku tudiz mi nenacte to co teprve napíšu ale načítá už to co jsem napsal. Popřípadě dá se to vyřešit nějak jinak? díky moc
A nebo další možnost jak by se dal vyřešit muj problem by byla pres scanf(prom)
potreboval bych že pokud uživatel nezada nic jen klepne enter (nova radka) aby to ten scanf poznal a vyskocil by z funkce. Diky moc za vsechny rady

 
Odpovědět
26.11.2018 19:03
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Kubas129
DarkCoder:26.11.2018 19:25

Vymazání vstupního bufferu provedeš následovně:

int ch;
while ((ch = getchar()) != '\n' && ch != EOF);

nebo

fseek(stdin,0,SEEK_END);

Lépe specifikuj svůj problém.
Funkce scanf() vrací počet úspěšně načtených znaků. Vrácenou hodnotu můžeš otestovat na nulu a pomocí return ukončit funkci. Ale toto asi není to co chceš.

Ty musíš postupovat následovně:
Pomocí scanf() načteš hodnotu. Otestuješ na to zda byla správně načtena do proměnné. Pokud ano, pokračuješ dále v programu, pokud ne, zavoláš scanf() znovu. Je třeba být přátelský vůči uživateli.

PS: Nezakládej zbytečně nový dotaz týkající se stejného problému.

Nahoru Odpovědět
26.11.2018 19:25
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.