PDA

Visualizza la versione completa : [C] Costrutto switch() e default


darksergio
21-02-2011, 15:52
perchè quando giro questo programma



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

int main()
{
char x;


printf("dire quale citta' fra Napoli,Avellino,Caserta,Benevento \n"
"\ne' piu' a nord (inserire iniziale): ");

do

{
scanf("%c",&x);
switch(x)
{
case 'N' : printf("\n Napoli e' la piu' a sud delle 4...\n"); break;
case 'C' : printf("\n Caserta e' piu' a sud di benevento \n"); break;
case 'A' : printf("\n Avellino e' piu' a nord solo di napoli \n"); break;
case 'B' : printf("\n Benevento e' la risposta esatta! \n \n"); break;
default: printf("\n Prova ancora...:"); break;
}
}
while(x!='B');

system("pause");
return 0;
}


in caso di default mi stampa "prova ancora" due volte???
sono sicuro si tratti di un errore banale...

grazie in anticipo per la risposta :)

lolide
21-02-2011, 16:07
Scrive Prova ancora concatenati, oppure prima lo scrive una volta poi premi un tasto e lo riscrive ?

MItaly
21-02-2011, 16:17
Se inserisci un carattere e premi Invio il primo carattere viene recuperato dalla scanf, mentre il secondo (l'Invio) rimane nel buffer di stdin, per cui viene letto dalla scanf al giro successivo senza attendere ulteriore input dall'utente. Per rimediare, inserisci dopo la scanf:


while(getchar()!='\n')
;

darksergio
21-02-2011, 16:36
grazie, e dire che ho anche letto di recente di un problema simile riguardate il buffer, e non ci avevo proprio pensato :stordita:

sto imparando molte cose da quando mi sono registrato :sadico:

Loading