Problem s načítáním znaku – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem s načítáním znaku – C / C++ – Fórum – Programujte.comProblem s načítáním znaku – C / C++ – Fórum – Programujte.com

 

ccccdddd0
Duch
24. 12. 2009   #1
-
0
-

Ahojte, potřebuji poradit, s následujícím kodem,
#include <stdio.h>
#include <stdlib.h>

int main()
{
char help;
do
{

printf("Zadejte 0 pro konec: ");
scanf("%c",&help);


}
while (help!='0');

return 0;
}

Podle mě by to mělo vypisovat toto:

Zadejte 0 pro konec: ...a čekat na zadaní znaku a po zadaní znaku pokračovat
Zadejte 0 pro konec: ...a čekat na zadaní znaku a po zadaní znaku pokračovat
Zadejte 0 pro konec: ...a čekat na zadaní znaku a po zadaní znaku pokračovat
Zadejte 0 pro konec: ...a čekat na zadaní znaku a po zadaní znaku pokračovat a když zadám 0 tak by se to mělo ukončit


jenomže to vypisuje nasledující:

Zadejte 0 pro konec: ...a čekat na zadaní znaku a po zadaní znaku pokračovat
Zadejte 0 pro konec:Zadejte 0 pro konec: ...a čekat na zadaní znaku a po zadaní znaku pokračovat
Zadejte 0 pro konec:Zadejte 0 pro konec: ...a čekat na zadaní znaku a po zadaní znaku pokračovat

když program krokuji, tak v každém druhém cyklu to přeskočí ten řádek s načítáním.........nevíte někdo proč to nefunguje?zkoušel jsem i načítání s getchar() a taky to nefunguje, ale když načítám číslo(int) pomocí scanf, tak je vše OK

Nahlásit jako SPAM
IP: 212.80.74.–
Matrix17
~ Anonymní uživatel
300 příspěvků
24. 12. 2009   #2
-
0
-

Je to tím že načteš znak enter zůstane ve frontě. Načte se při opakování cyklu (to je to jak ti přeskočí jedno načítání) a pak když se opakuje znova čeká na vložení znaku.

zkus to takhle



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

int main()
{
char help;

do {
printf("Zadejte 0 pro konec: ");
scanf("%c",&help);
while (getchar() != '\n');
} while (help!='0');

return 0;
}

Nahlásit jako SPAM
IP: 78.156.128.–
ccccdddd0
Duch
24. 12. 2009   #3
-
0
-

a nevíte někdo proč mi nefunguje ukončení cyklu, když tam dám více podmínek např.

do
{

printf("Zadejte 0 pro konec: ");
scanf("%c",&help);
while (getchar() != '\n');



}
while ((help!='0')||(help!='q'));

Nahlásit jako SPAM
IP: 212.80.74.–
KIIV
~ Moderátor
+43
God of flame
24. 12. 2009   #4
-
0
-

To ccccdddd : protoze tam mas neco nebo neco.. je tezke zvladnout aby pak byly obe podminky 0 kdyz muze byt 0 jen jedna z nich...
mrkni se na pravdivostni tabulky a booleovu algebru.. pak budes trochu lepe chapat skladani podminek

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
AdamHlavatovic0
Stálý člen
24. 12. 2009   #5
-
0
-

> a nevíte někdo proč mi nefunguje ukončení cyklu ...
lebo ta podmienka je vzdy rovna logickej jednotke

Nahlásit jako SPAM
IP: 94.229.32.–
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, 92 hostů

Moderátoři diskuze

 

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