[ flx @ 05.12.2004. 16:34 ] @
| Ovo je mali kod koji bi terbalo da opise moj problem:
Code:
main(){
char b;
while(1){
printf("Unesi karakter?");
b=getchar();
}
}
Prvi put kada prolazi kroz ciklus,on regularno izbaci na ekran "Unesi karakter" i ceka na unos,kada sledeci put prolazi kroz ciklus on kao da preskoci jednom funkciju getchar i dva puta ispise "Unesi karakter".U cemu je tu problem?
Ja se izvinjavam ako je ovo pitanje glupo,ali ja stvarno ne znam u cemu je problem.
Hvala
[Ovu poruku je menjao Dragi Tata dana 06.12.2004. u 15:25 GMT+1] |
[ Milos Stojanovic @ 05.12.2004. 20:12 ] @
Problem je što ti uneseš karakter, i nakon toga pritisneš enter. On to registruje kao dva znaka.
Jedno rešenje bi bilo
Code:
while(1)
{
if (b != '\n')
printf("Unesi karakter?");
b=getchar();
}
mada ne znam za šta ti konkretno treba.
[ Alef @ 05.12.2004. 20:34 ] @
Pa nema problema… :)
Stvar je u standardnom ulazu, tj. njegovom internom buffer-u. Kada god pritisneš neki taster, karaker koji si pritisnuo se smešta u red (mislim na FIFO strukturu podataka). Funkcija getchar samo uzmima prvi karakter u redu (onaj koji je prvi unet, uzme ga i obriše iz reda), a čeka na unos samo ukoliko je buffer prazan. E sad, kada prvi put pozoveš getchar, ti nisi pritisnuo samo, recimo, karakter 'p', nego si pritisnuo i eneter, tj. '\n', pa kada uđeš u sledeći ciklus petlje, getchar, pošto buffer nije prazan, uzme iz njega '\n' i ne čeka na unos.
I to je to…
[ flx @ 05.12.2004. 20:46 ] @
Hvala na objasnjenju,sad mi je jasno.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.