Errore funzione switch

di il
6 risposte

Errore funzione switch

Salve, probabilmente è una svista, ma non capisco perchè il menù, che ho realizzato con uno switch, non funzioni nel modo corretto.
Ecco il codice:

int main()
{
    char opt;
    printf("Benvenuto!Premere 'i' per conoscere i comandi");
    while(1){
        printf("\n");
        scanf("%c",&opt);
        switch (opt){
            case 'i': printf("-Per cercare tramite nome premere 'n'\n-Per cercare tramire cognome premere 's'\n-Per cercare tramite numero di  
                               matricola premere 'b' ");break;               
            case 'n': name();break;
            case 's': surname();break;
            case 'b': badge_number();break;
            default: printf("Errore: l'istruzione inserita non e' valida");break;

        }

    }
    return 0;
}
Il problema è che anche quando inserisco un comando corretto ('i','n','s' o 'b') dopo l'attivazione della funzione corrispondente mi compare comunque il messaggio impostato nel default. Ciò non dovrebbe essere impedito dalle istruzioni break alla fine di ogni riga?
Spero possiate aiutarmi e vi ringrazio in anticipo

6 Risposte

  • Re: Errore funzione switch

    Metti una printf() subito dopo la scanf(), stampando il carattere letto e così capirai che il problema non è lo switch...
  • Re: Errore funzione switch

    Un indizio ... prova ad aggiungere un

    case '\n': break;
  • Re: Errore funzione switch

    Se uso la printf come mi ha detto candaluar mi restituisce esattamente il carattere che ho inserito.Se aggiungo case '\n': break; come ha detto oregon il codice funziona correttamente però, ovviamente, quando premo solo invio, non ottengo nessun output. Risolverei il problema se aggiungessi la printf anche al caso '\n' però mi sembra più una scorciatoia che una vera soluzione del problema...
    Il fatto è che non riesco proprio a capire perchè candaluar dice che l'errore sta nella scanf...
  • Re: Errore funzione switch

    Il mio suggerimento era per farti capire ... il problema è nella scanf perché viene memorizzato sia il carattere sia il Return ...

    Guarda nel forum, ci sono stati tanti altri casi simili ...
  • Re: Errore funzione switch

    Altro indizio: quanto è lungo un char?
  • Re: Errore funzione switch

    E aggiungerei ... cosa è un IO bufferizzato?
Devi accedere o registrarti per scrivere nel forum
6 risposte