OT: Trosku C, printf, scanf

Miroslav Šinko sinkomiro na gmail.com
Čtvrtek Prosinec 29 13:35:01 CET 2011


printf zapisuje do stdout, scanf cita zo stdin, takze tam suvislost
nie je. Ako pisu na tom odkaze, po napisani vstupu do scanf stlacite
enter, ktory ale ostane "visiet", t.j. nasledujuci gets, getchar apod
ho rovno vycita a necaka na dalsi vstup. Pre istotu si pred kazdym
vstupom vyprazdnite stdin (ako to robite tym while), je to dobre aj
pre blbovzdornost - uzivatel moze hocico postlacat.. Je na to priamo
funkcia fflush(stdin), pripadne flushall().

(Teraz som si to vyskusal vo VS2005, funguje)

miro

2011/12/29 Snehulak <snehulak na gmail.com>:
> Ahojte,
>
> obvykle delam v C# a ted jsem nucen delat semestralku v klasickem C (VS2010
> win32 shell) a nejak mam zmatek se vstupem a vystupem :)
>
>
> pokud vsude mozne v programu neuvedu toto while((c = getchar()) != '\n' && c
> != EOF);
>
> tak se mi stava , ze pokud chci vstup z klavesnice , nevraci mi funkce scanf
> vubec nic . To same kdyz mam getchar(); aby program cekal na enter tak se
> program chova jako by byl stlaceny .
>
> Chapu dobre, ze to ma souvislost asi s tim kdyz  nekde predtim je trebas
> printf("neco \n");  ??? a tim cyklem while si vlastne ten enter mazu ? Jak
> to tedy v programu resit ?
>
> Stejne se chovaji i nejake priklady z internetu , a nejak netusim co delam
> spatne .
>
> Narazil jsem na tohle v C FAQ , ale nejak z toho nejsem moudrej nebot mi to
> dela jak u scanf,gets atd.... http://c-faq.com/stdio/scanfinterlace.html
>
> snehulak
>


Další informace o konferenci Hw-list