Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] scanf %c e fflush

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337

    [C] scanf %c e fflush

    ho realizzato un programma con la gestione di un file, in cui è anche possibile rimuovere il file chiedendo conferma all'utente:


    codice:
    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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'))
    {
    ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    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

  4. #4
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.