PDA

Visualizza la versione completa : [C] Metodo standard per fare il flushing dello STDIN ?


AnonyVeneziano
05-02-2004, 00:26
Ciao ,

Mi chiedevo quale fosse il metodo standard per fare il flushing dello stdin nel C (ad esempio del buffer della tastiera) , difatti spesso mi capita che nei programmi che fanno uso della funzione "scanf" se alla funzione scanf viene passato per sbaglio un input di tipo diverso da quello specificato dalla specifica di conversione (per esempio gli si passa una lettera anzichè un intero) "impazzisce" e tutte le successive chiamate di "scanf" non faranno + alcuna richiesta di input, ma si limiteranno a rimemorizzare nella variabile alla quale puntano il valore inserito precedentemente per sbaglio nella prima "scanf" .

Tutto ciò è seccante ,e volevo evitarlo Flushando il buffer di input dopo una scanf se necessario (ossia se gli viene passato un valore sbagliato) , solo che non ho capito quale sia il metodo migliore e soprattutto quale sia quello standard , anke perchè sul mio libro di C non c'è!

fflush(stdin); E' già scartato perchè non è definito dallo standard C ( e sotto Linux non funziona :P) .

Qualcuno ha delle info a riguardo? :)

Grazie

Ciao

Johnny_Depp
05-02-2004, 01:58
leggi fino in fondo:
http://forum.html.it/forum/showthread.php?s=&threadid=591004&highlight=fflush

AnonyVeneziano
05-02-2004, 14:40
while(getchar()!='\n')
;

Grazie :)

Ma questo metodo funziona con tutti i tipi di buffer e in tutti i casi possibili? :)

Ma soprattutto , perchè scanf non flusha da solo? :P

Grazie

Ciao

Loading