Getchar a while – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Getchar a while – C / C++ – Fórum – Programujte.comGetchar a while – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Thom
~ Anonymní uživatel
3 příspěvky
26. 9. 2008   #1
-
0
-

Ahoj všichni,

prosím Vás o radu. Nevíte někdo, proč tělo cyklu proběhne dvakrát a vždy v druhém cyklu se tváří tak, jakoby to načetlo i ten enter.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int sw;
printf("\n\tTest kombinace fce getchar s while \n\n");
while (sw != 'q') {
// do {
printf("zadej sw : ");
sw = getchar();
printf("\nsw je: %d\n", sw);
}
// } while (sw != 'q');
system("PAUSE");
return 0;
}

Děkuji mnohokrát.

Nahlásit jako SPAM
IP: 85.13.72.–
Reklama
Reklama
mephi0
Expert
26. 9. 2008   #2
-
0
-

no ono sa to netvari. skus namiesto getchar() použiť getch()

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
KIIV+42
God of flame
26. 9. 2008   #3
-
0
-

a jak tam ten znak posles? pokud entrem tak uz urcite jiste vis ze enter se nacte jako dalsi znak...
co zkusit poslat jen treba ASDF a pak odentrovat...

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Thom
~ Anonymní uživatel
3 příspěvky
26. 9. 2008   #4
-
0
-

Děkuji za odpovědi,

mephi, prosím tě. Jaké jsou vlastnosti fce getch()? Zkusil jsem to a vypadá to slibně, ale je mi divné, že z žádných "chytrých" knihách o ni není zmínka.

KIIV Přesně tak, tím entrem ale jak jinak to načítání znaku ukončit? a hlavně v jedné knize psali, že se getchar načte jen první znak (tak to mi asi lhali.. :smile10: a to by nebylo poprvé ani naposled). Možná, že se načte jen jeden a právě proto proběhne ten cyklus dvakrát a v tom druhém se načte ten entr. To si ne. Protože mi například v prubehu toho prvního cyklu ještě projde přes switch a tam se ještě neco vykoná, ale nic z klávesy při tom nezadávám. takže určitá pravěpodobnost takovéhoto chování by tu byla. No je to věda. A copak je prosímtě to ASDF? Jestli jen shluk pismen, tak po zadání to vypsalo ASCII všech pěti znaků (tj. i stim entrem).

děkuji a přeji pěkný den.

Nahlásit jako SPAM
IP: 85.13.72.–
tmi0
Věrný člen
26. 9. 2008   #5
-
0
-

preferuj ' scanf("%c",&ch); ', tohle volani preskoci vsechny bile znaky (enter, mezera, tab...) na vstupu a prave jeden znak ulozi do promene ch.
co se tyce getch() a getchar() (pokud se nemylim tak se chovaji stejne, ale getchar je standardni a getch je z curses.h) tak ty prectou prave jeden znak ze vstupu a vrati jeho ASCII kod. kdyz napises ASDF\n, tak prave tyhle znaky pujdou na vstup a odtud si je ony funkce postupne budou odebirat. tedy ten enter tam zustane. elegantne se ho muzes zbavit vise zminenym scanf, pripadne to muzes osetrit podminkou typu !='\n';

Nahlásit jako SPAM
IP: 213.226.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 327 hostů

Podobná vlákna

Getchar vs Gets — založil Slimer

C getchar EOF — založil Poki

Funkce getchar — založil xXx

Getchar() a EOF — založil dreamer

Dvakrát getchar() — založil vazbok

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý