Ciao ... Il motivo è abbastanza semplice ... Prendi come esempio questo codice:
codice:
char car;
scanf("%c", &car);
printf("Valore di car al primo scanf : %c\n", car);
/* fflush(stdin); */
scanf("%c", &car);
printf("Valore di car al secondo scanf : %c\n", car);
printf("car convertito in intero : %d\n", (int)car);
Mettiamo caso che alla prima chiamata di scanf venga digitato il carattere 'q' e poi invio ... quindi sulla stream d' input (stdin) ci saranno questi due caratteri 'q' e '\n' (newline) ... la prima scanf leggerà 'q' e lo metterà in car, quindi stdin ora conterrà solo '\n' ... Siccome al momento della seconda scanf stdin non è vuoto, la scanf inserirà il prossimo carattere di stdin ('\n') in car senza che tu prema niente ... Puoi anche notare dall' ultima printf che il carattere '\n' convertito in intero è 10 (ecco il motivo di quei 10 nella matrice) ... Se provi a "discommentare" fflush(stdin) vedrai che otterrai il risultato da te voluto, questo perchè una chi