Ciao a tutti,
avevo iniziato a studiare C per un esame, poi l'ho un pò abbandonato, mentre
adesso vorrei riprenderlo per approfondire. Nel fare i primi esercizi di ripasso
mi sono imbattuto in una situazione di questo tipo:
scrivevo:
int main()
{
int eta;
char sesso;
printf("Digita età: ");
scanf( "%d", &eta);
printf("\n Digita il sesso: \n M se maschio:\n F se femmina\n");
scanf( "%c", &sesso);
if((sesso == 'M') || (sesso == 'm')) printf(" Sei un maschietto di %d anni", eta);
else printf(" Sei una femminuccia di %d anni", eta);
....
pensavo che la funzione scanf attendesse l'inserimento da tastiera di M o F,
mentre invece, non mi da il tempo e chiude subito con l'opzione prevista dall'else.
Se invece inverto i printf, tutto funziona regolarmente:
int main()
{
int eta;
char sesso;
printf("\n Digita il sesso: \n M se maschio:\n F se femmina\n");
scanf( "%c", &sesso);
printf("Digita età: ");
scanf( "%d", &eta);
if((sesso == 'M') || (sesso == 'm')) printf(" Sei un maschietto di %d anni", eta);
else printf(" Sei una femminuccia di %d anni", eta);
Sò che i + si divertiranno nel leggere le mie osservazioni, ma come dicevo ero convinto
che scanf attendesse la stringa di input da tastiera, invece debuggando ho visto che "salta"
l'ultimo scanf e passa immediatamente all'if che non essendo verificato entra nell'else.
Perchè succede ?
C'è un modo per "imporre" l'attesa ?
Grazie