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.
Come mai? Come si può risolvere?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; } } }

Rispondi quotando