Il motivo è "semplice".
Quando tu leggi un valore decimale usando la scanf(), quello che accade dietro le quinte è questo:
Il programma attende che tu immetta l'input.
E tu scrivi, ad esempio:
100<INVIO>
La scanf() analizza la stringa ricevuta (è nel buffer), estrae il valore 100 che viene memorizzato nella variabile float, rimuove questo valore dal buffer e poi il programma prosegue.
Nel buffer, quindi rimane l'INVIO.
Questo INVIO viene letto dalla succesiva getchar().
Quindi il programma termina.
Se vuoi, puoi provare a rimuovere la riga del getchar() e ad aggiungere questo alla fine (prima dell'istruzione return) e vedrai che il programma prima ti stampa il carattere letto dal buffer e poi si ferma
Ora per terminare il programma devi premere "q" (minuscola) e invio.codice:int ch = getchar(); printf("\n\n"Carattere: %d\n", ch); while(getchar() != 'q');



Rispondi quotando