PDA

Visualizza la versione completa : [C] scanf di un char da tastiera


sslazio 1900
15-12-2005, 16:12
printf("\nPari o Dispari?\t");
scanf("%c",&pd);

Questo il mio sorgente.

Solo che quando compilo ( e' un'applicazione per console -DOS-) e vado in esecusione mi salta l'imput di questo scanf...

Che sbaglio?

oregon
15-12-2005, 16:30
Fallo vedere tutto il sorgente ...

unomichisiada
15-12-2005, 19:07
Oregon ha ragione,quando si vuole la soluzione ad un problema si deve mettere gli altri nella condizione di aiutarci e tu hai postato due righe di codice.Comunque dal poco che hai detto posso immaginare che sia il solito problema delle funzioni di input bufferizzate, prova a scrivere fflush(stdin); prima della scanf

ibykos
15-12-2005, 19:22
Penso anch'io che il problema sia quello.
Solita spiegazione: la modalitÓ di input predefinita (per gli amici "cooked") prevede che l'input ricevuto da tastiera possa essere fornito alle funzioni che lo richiedono solo quando viene premuto il tasto INVIO.
Il tasto INVIO Ŕ un carattere come gli altri per cui viene aggiunto al fondo del buffer di input (Ŕ un buffer interno che pu˛ essere manipolato quando serve) e spedito al pari degli altri caratteri.
Ora mettiamo il caso che ci siano due scanf("%c") di fila: appena l'utente immette il carattere (ad esempio 'a') e preme INVIO la prima riceverÓ il carattere 'a' e la seconda, trovando un carattere inutilizzato nel buffer di input se lo mangerÓ, con la spiacevole conseguenza che hai riscontrato.
Il problema si risolve formalmente utilizzando una fflush(stdin) dopo ogni funzione di input "a rischio", oppure con dei trucchetti che Ŕ meglio evitare, come ad esempio l'uso improprio di una getchar() in modo da intercettare il carattere di troppo.

Ciao!

sslazio 1900
15-12-2005, 20:43
Grazie a tutti per le risposte.

Loading