Zadejte hledaný výraz...

C – getchar vs. scanf

Milan Seitler
verified
rating uzivatele
(5 hodnocení)
29. 9. 2010 15:56:38
Začínám s Céčkem a mám takový začátečnický dotaz - mám prográmek, který načte znak ze vstupu a zobrazí znak s ASCII hodnotou o jedno vyšší + vypíše tu ASCII hodnotu.
Takhle to funguje. Když ale getchar vyměním za tak to sice vypíše tu hodnotu o jedno vyšší, ale místo aby to vypsalo ASCII číslo třeba 66, tak to vypíše "2130567234". Proč teda funkce getchar takhle funguje a scanf ne?
29. 9. 2010 15:56:38
https://webtrh.cz/diskuse/c-getchar-vs-scanf/#reply566447
Josef
verified
rating uzivatele
(13 hodnocení)
29. 9. 2010 17:16:02
Ahoj, nic na tom neni :)
29. 9. 2010 17:16:02
https://webtrh.cz/diskuse/c-getchar-vs-scanf/#reply566446
Milan Seitler
verified
rating uzivatele
(5 hodnocení)
29. 9. 2010 18:05:14
Jojo, však takhle to funguje, to jsem psal, ale zkus tam dát ještě výpis ASCII kódu, tzn třeba pro "A" je to 65. To funguje jenom s getchar. ;)
29. 9. 2010 18:05:14
https://webtrh.cz/diskuse/c-getchar-vs-scanf/#reply566445
petr.satka
verified
rating uzivatele
29. 9. 2010 18:25:58
Zdravím.
Řekl bych, že je to tím, že scanf očekává ukazatel na char - ne na int. Zapíše tedy jen do nejnižších 8 bitů. A protože jsi int c neinicializoval na 0, obsahuje pak proměnná na vyšších bitech nějaký bordel. Takže buď zaměň int za char, nebo na začátku přiřaď c = 0.
29. 9. 2010 18:25:58
https://webtrh.cz/diskuse/c-getchar-vs-scanf/#reply566444
Milan Seitler
verified
rating uzivatele
(5 hodnocení)
29. 9. 2010 19:19:55
Vypadá to tak, c = 0 to řeší. Díky :)
29. 9. 2010 19:19:55
https://webtrh.cz/diskuse/c-getchar-vs-scanf/#reply566443
petr.satka
verified
rating uzivatele
29. 9. 2010 19:55:04
Není zač. Jinak rada do života: Je dobré si zvyknout všechny proměnné vždy hned při definici inicializovat na 0 (ukazatele na NULL), nebo na nějakou užitečnou hodnotu.
29. 9. 2010 19:55:04
https://webtrh.cz/diskuse/c-getchar-vs-scanf/#reply566442
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
1. 10. 2010 22:10:22
Napsal petr.satka;577589
Zdravím.
Řekl bych, že je to tím, že scanf očekává ukazatel na char - ne na int. Zapíše tedy jen do nejnižších 8 bitů. A protože jsi int c neinicializoval na 0, obsahuje pak proměnná na vyšších bitech nějaký bordel. Takže buď zaměň int za char, nebo na začátku přiřaď c = 0.
presne tak - a ja se priklanim za zmenu na char.
1. 10. 2010 22:10:22
https://webtrh.cz/diskuse/c-getchar-vs-scanf/#reply566441
Pro odpověď se přihlašte.
Přihlásit