• 3 odgovora
  • 2.300 pregleda
Molim vas za pomoc u vezi znakova u C-u 05.12.2004. u 16:34 · pre 266 meseci #1
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]
Re: Molim vas za pomoc u vezi znakova u C-u 05.12.2004. u 20:12 · pre 266 meseci #2
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.
Potpis
ex. trooper
Oh goody... it's my Illudium PU-36 Explosive Space Modulator!
Softversko Inženjerstvo
♪♫♪
Re: Molim vas za pomoc u vezi znakova u C-u 05.12.2004. u 20:34 · pre 266 meseci #3
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…
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme