Salve a tutti...
Ho un piccolo problema.. Utilizzando la funzione presente in C fflush(stdin), il buffer di input non viene ripulito.. Programmo con Xcode su Mac.. Qualcuno ha una qualche idea del perchè? Grazie
Salve a tutti...
Ho un piccolo problema.. Utilizzando la funzione presente in C fflush(stdin), il buffer di input non viene ripulito.. Programmo con Xcode su Mac.. Qualcuno ha una qualche idea del perchè? Grazie
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Ho risolto inserendo questa funzione:
void clear1 (void){
while ( getchar() != '\n' );
}
Con quel codice se l'utente inserisce un EOF (Ctrl-Z su Windows, Ctrl-D su Linux e OS X) oppure se l'input è rediretto da un file e il file termina il tuo programma va in loop infinito.
La cosa è leggermente più sofisticata (devi uscire anche in caso di EOF):
codice:void clear_stdin() { int ch; while((ch=getchar())!='\n' && ch!=EOF) ; }
Ultima modifica di MItaly; 07-12-2014 a 16:11
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie mille!!