Portál AbcLinuxu, 8. května 2024 16:06


Dotaz: Problem s funkci getchar()

29.9.2012 15:08 Jarda189
Problem s funkci getchar()
Přečteno: 425×
Odpovědět | Admin
Ahoj,

jsem začínající programátor v jazyce C a mám problém s funkcí getchar(). Mnoho konstrukcí s touto funkci mi funguje, ale jedna pořád ne a ne. Ani v manuálu této funkce jsem odpověd nenalezl.

Chci udělat pomocí getchar() smyčku, která přečte symboly z klavesnice na vstupu STDIN a ulozi tyto hodnoty do pole. Toto mi beží v pořádku. Problém nastavá ve chvíli, kdy chci pracovat dále s daty.

Kód má zjednodušeně takto:

deklarece pole........

..

while ((znak = getchar()) != EOF) { ....ukladání do pole.......

}

Cokoliv je ale za touto smyčkou, nikdy se neprovede. Přidal jsem kód pro bližší upřesnění.

while ((znak = getchar()) != EOF){ printf ("Znak byl %c", znak);}

printf ("Konec čtení");

Po spuštěni se mi standartně tiskli znaky na obrazovku, ale text "Konec čtení" se nikdy nevytiskne. Připadá mi, jako by se po smyčce ukončila MAIN funkce a dál se nedělá nic.

Dá se to nějak ošetřit, abych mohl pokračovat v programu ?

Děkuju moc za pomoc.

P.S.: Pokud je to hloupý dotaz, předem se omlouvám.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.9.2012 15:12 chrono
Rozbalit Rozbalit vše Re: Problem s funkci getchar()
Odpovědět | | Sbalit | Link | Blokovat | Admin
EOF je, minimálne v Linuxe, kláves Ctrl+D.
29.9.2012 15:35 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Problem s funkci getchar()
Odpovědět | | Sbalit | Link | Blokovat | Admin
printf() píše do buffer-u a ten sa flush-ne vtedy, keď sa má vypísať znak nového riadku, alebo ak sa očakáva vstup.

printf ("Konec čtení\n");
29.9.2012 15:41 Kill_Bill
Rozbalit Rozbalit vše Re: Problem s funkci getchar()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Misto EOF by tam melo byt '\n'.
oroborus avatar 29.9.2012 16:36 oroborus | skóre: 20 | blog: Bulanci
Rozbalit Rozbalit vše Re: Problem s funkci getchar()
Odpovědět | | Sbalit | Link | Blokovat | Admin
Potom pozor na to, aby si premennu znak _mal_ definovanu ako int.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.