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?