Ciao a tutti.
Mi sto inceppando su un problema che a prima vista sembrerebbe banale, e comunque aggirabile, ma vorrei capire a cosa è dovuto il mio errore. In pratica, la funzione main stampa su OUTPUT (di default è stdout), una lista di scelte possibili; dopodichè si prende in input con una scanf il valore scelto e lo si assegna alla variabile choice. Quindi, si switcha la choice e si eseguono le operazioni corrispondenti.
In pratica, però, se da input digito la 'q' per uscire, mi va in loop infinito, continuando a stampare sempre le opzioni disponibili, con alla fine "Unvalid choice"; ricade, quindi, sempre nella condizione di default. Inoltre, succede lo stesso anche se digito qualunque altro carattere da tastiera.
Ciò non accade, invece, se inserisco un numero da tastiera; se il numero non è presente tra le varie opzioni, mi stampa unvalid choice e di nuovo le opzioni, consentendomi di scegliere un'altra opzione.
codice:
int main()
{
int choice, value, quit = 0;
while (!quit)
{
fputs("Insert a number to choice an option: \n", OUTPUT);
fputs("1 Add an element at the head\n", OUTPUT);
fputs("2 Add an element at the end\n", OUTPUT);
// [...]
fputs("q Exit\n", OUTPUT);
fputs("\n\n", OUTPUT);
scanf("%d", &choice);
switch (choice)
{
case 1:
// [...]
break;
case 2:
// [...]
break;
// [...altri case...]
case 'q':
fputs("Exit\n", OUTPUT);
quit = 1;
break;
default:
fputs("Unvalid choice\n", OUTPUT);
break;
}
}
}
Come mai? Come si può risolvere?