Molto spesso quando richiedo all'utente di inserire un carattere vedo chew in realtà nello stdin era già presente qualcosa e il comando non funzia bene...

In Windows uso fflush(stdin) ma in Linux non va e cmq non credo sia del tutto corretto...

Es.:
codice:
do
{
   printf("Continuo? (y, n)");
   scanf("%c", &scelta);
}
while(scelta != 'y' && scelta != 'n');
Mi stampa la frase due volte, poi comincia a funzionare bene, come se la prima volta avesse già nello stdin un carattere e quindi riesegue già una volta il ciclo...
In Windows risolvo con fflush(stdin); messo prima del printf...