Getchar() - ukonceni EOF a \n – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Getchar() - ukonceni EOF a \n – C / C++ – Fórum – Programujte.comGetchar() - ukonceni EOF a \n – C / C++ – Fórum – Programujte.com

 

cp.Hook0
Newbie
19. 9. 2008   #1
-
0
-

zdarec, mam takovy problem.... napsal jsem si klasicky tohle:



int main() {

int z;

while ((z = getchar()) != EOF) {
putchar(z);
}
}


a potrebuji aby se mi zadavani textu ukoncilo i po zmacknuti enteru (tedy \n)..jde to nejak napsat do podminky while?? nebo to musim dat zvlast pod to treba pomoci if...zkousel jsem ruzne moznosti co me napadali a vzdy to nefugovalo..dekuji za radu, v Cecku se teprve zacinam ucit.. dik

Nahlásit jako SPAM
IP: 213.211.43.–
Bald3rr0
Super člen
19. 9. 2008   #2
-
0
-

int z;

do {
z = getch();
} while (z != 13); // enter má hodnotu 13

Cyklus se bude provádět dokud nestiskneš enter.

Nahlásit jako SPAM
IP: 82.100.0.–
cp.Hook0
Newbie
20. 9. 2008   #3
-
0
-

To Bald3rr : no nevim ale podle me ma enter hodnotu 10.. ale ja jsem to chtel jinak, met v jednom cyklu to aby se dal program ukoncit pomoci EOF a zaroven Enteru..jde to? ale i tak dik..

Nahlásit jako SPAM
IP: 213.211.43.–
Matrix17
~ Anonymní uživatel
300 příspěvků
20. 9. 2008   #4
-
0
-

To cp.Hook : Můžeš zkusit třeba tohle:



int main()
{
int z;
do {
z = getchar();
} while (z != EOF && z != '\n');
}

Nahlásit jako SPAM
IP: 78.156.128.–
Bald3rr0
Super člen
20. 9. 2008   #5
-
0
-

To cp.Hook : Na 13 jsem přišel pomocí tohoto kódu:

#include <conio.h>

#include <iostream>

int main()
{
int z;
do {
z = getch();
std::cout << z;
} while (z != 13);
getchar();
return 0;
}

Nahlásit jako SPAM
IP: 82.100.0.–
cp.Hook0
Newbie
20. 9. 2008   #6
-
0
-

To Bald3rr : no jak jsem psal na zacatku, jsem zacatecnik, da se rict naprosty zacatecnik, takze tomu tvemu kodu nerozumim....(zejmena ne std::cout<<z).....ja jsem si napsal je tohle:



int z;
while ((z = getchar()) != EOF){
printf ("kod z ASCII je: %i\n",z);
}

a kdyz zmacknu enter tak mi to vypise cislo 10...tak proto jsem se domnival ze je to 10.. jenze jak rikam jsem zacatecnik a nejspis se mylim, takze jak je to doopravdy? 10 nebo 13?? dekuji za nazor jeste nejake treti osoby:D..
btw.. kod od matrix17- diky uz mi to jede, trochu jsem to jeste poupravil ale uz to funguje, ja jsem tam porad cpal misto && nebo. prislo me to logictejsi - ze musi platit jedno nebo druhe aby se to ukoncilo..jo a kdyz ukoncuji pomoci EOF (tedy ctr+D, tak to musim zmacknout 2x - ma to tak byt?)..

Nahlásit jako SPAM
IP: 213.211.43.–
KIIV
~ Moderátor
+43
God of flame
20. 9. 2008   #7
-
0
-

To cp.Hook : problem enteru je, ze je 3 typech systemu pokazdy jinak...
win ma <cr> <lf> tusim 13 10
UNIX ma <lf> 10
a MAC <cr> 13

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
ondra
~ Anonymní uživatel
244 příspěvků
20. 9. 2008   #8
-
0
-

Porovnávej načtený znak se znakem '\n' a máš to.

Nahlásit jako SPAM
IP: 89.203.160.–
cp.Hook0
Newbie
21. 9. 2008   #9
-
0
-

To KIIV : jj uz to chapu..delam na linuxu proto ta 10tka... dik za info..

Nahlásit jako SPAM
IP: 213.211.43.–
Matrix17
~ Anonymní uživatel
300 příspěvků
21. 9. 2008   #10
-
0
-

To cp.Hook : Jen doplním proč tam musí být && a ne ||. Je to proto, že cykly while a do pracují dokud platí podmínka. Když bys tam dal || (nebo) tak by to vnitřně fungovalo jako && (a zároveň) což by vedlo k chybě. Čekalo by to až se "objeví" EOF a ENTER zároveň což nemůže v tomto případě nastat.

Nahlásit jako SPAM
IP: 78.156.128.–
Othom
~ Anonymní uživatel
1 příspěvek
23. 9. 2008   #11
-
0
-

cp.Hook díky za otázku, tohle přesně řeším a vždycky mě štve, když někde píšou, že to má fungovat a ono za boha nic.
náhodou něčteš "Programovací jazyk C od autorů jazyka C"?

Pěknej den ahoj

Nahlásit jako SPAM
IP: 85.13.72.–
arnold
~ Anonymní uživatel
1 příspěvek
27. 9. 2008   #12
-
0
-

mam podobny problem, ale za zadnou cenu na to nemuzu prijit. chtel bych ukoncit vstup podobnym zpusobem ale ne pri zadani \n ale treba pri zadani maleho pismena. popr. pro zacatek alespon napr pri zadani pismena A.

nebezi mi
while ((z = getchar()) != 65) ani while ((z = getchar()) != '65') ani while ((z = getchar()) != 'A')

reseni by bylo pouzit do while ale bohuzel se muze stat ze nebudu potrebovat ani jeden pruchod. diky za radu

Nahlásit jako SPAM
IP: 78.136.153.–
!_UK@$0
Newbie
12. 6. 2009   #13
-
0
-

A jak ten program pokračuje dál? Je dost možný, že chyba bude až v těle while

Nahlásit jako SPAM
IP: 89.176.88.–
Začínající programátor v C Bodoucí programátor Objective-C
m->29+6
Super člen
12. 6. 2009   #14
-
0
-

while((z = getchar()) != 'A') {

puts("Zadany znak - pokracujeme.");
}
Toto by ti malo normálne šlapať, neviem prečo ti to nejde. Ak chceš ukončiť while po zadaní napr. malého písmeno tak len zmeníš podmienku:
while((z = getchar()) < 'a' || z > 'z') {

puts("Zadany znak - pokracujeme.");
}

Nahlásit jako SPAM
IP: 213.151.217.–
Wizard0
Stálý člen
12. 6. 2009   #15
-
0
-

Niekedy mam pocit, ze sa tu nikto na datum postov nepozera. :D Riesit rok stary post je trocha divne. :X

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

Podobná vlákna

Getchar() a EOF — založil dreamer

C getchar EOF — založil Poki

Qpython - eof error — založil sysel

Ifstream čte i po EOF ?! — založil Eatel

Uziti cin.eof() — založil vyhnanek

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ý