PDA

Visualizza la versione completa : [C] scanf %c e fflush


{-_-}
08-01-2008, 17:16
ho realizzato un programma con la gestione di un file, in cui è anche possibile rimuovere il file chiedendo conferma all'utente:





case 4: { printf("\t\t\tsei sicuro di voler distruggere il database?");
//fflush(stdin);
scanf("%c", &x);
if(strcmp("s", &x)==0){ remove("dipendenti"); printf( "\t\t\tfile rimosso con successo\n\n");}
break;}


il problema è che non mi chiede di inserire si o no, nel senso non mi considera la scanf SENZA fflush e non capisco il perchè.

inoltre se metto la fflush mi considera la scanf però, non funziona la strcmp, e non capisco il perchè.

se tolgo la fflush e metto %s nella scanf funziona tutti, non riesco a capire proprio

grazie

oregon
08-01-2008, 18:48
La flush e' necessaria per evitare che dei tasti pressati in precedenza possano essere letti dalla scanf successiva.

La strcmp non ti funziona perche' la stai usando per confrontare una stringa con un carattere ... se accetti un carattere la if deve essere

if((x=='s') || (x=='S'))
{
...

{-_-}
09-01-2008, 21:21
chiarissimo come sempre, grazie.

inizialmente prendevo una stringa poi ho deciso di utilizzare solo un carattere, ho modificato la strcmp credendo che il carattere fosse il caso limite di una stringa e quindi che la strcmp funzionasse.

grazie

MItaly
09-01-2008, 22:10
Il carattere è il caso limite di una stringa, ma non è ovviamente seguito dal terminatore NUL, che le funzioni che lavorano con le stringhe si aspettano.

Loading