Problema con lo scanf di un carattere

di il
2 risposte

Problema con lo scanf di un carattere

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???

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte