Il quesito è il seguente:
Se compilo ed eseguo questo semplice programma, va tutto bene:
int main()
{
int num;
char carattere;
printf("Inserire un carattere: \n");
scanf("%c", &carattere);
printf("Il carattere inserito è %c\n", carattere);
printf("Inserire un numero intero: \n");
scanf("%d", &num);
printf("Il numero inserito è %d\n", num);
return EXIT_SUCCESS;
}
---------------------- Output ----------------------------------
Inserire un carattere:
P
Il carattere inserito è: P
Inserire un numero intero:
5
Il numero inserito è 5
-----------------------------------------------------------------
Se invece inverto la lettura del carattere e del numero, ovvero cosi:
int main()
{
int num;
char carattere;
printf("Inserire un numero intero: \n");
scanf("%d", &num);
printf("Il numero inserito è %d\n", num);
printf("Inserire un carattere: \n");
scanf("%c", &carattere);
printf("Il carattere inserito è %c\n", carattere);
return EXIT_SUCCESS;
}
Il numero viene letto e stampato correttamente, invece il carattere viene ignorato. Mi spiego meglio: mi viene chiesto di inserire inizialmente il numero, lo inserisco, schiaccio invio e il risultato è questo:
-------------------------------- Output -------------------------
Inserire un numero intero:
5
Il numero inserito è 5
Inserire un carattere:
Il carattere inserito è
--------------------------------------------------------------------
Non mi viene data nemmeno la possibilità di inserire il carattere che vengono subito stampate le ultime due righe.
Qualcuno ha idea del motivo???