Errore funzione switch

di Anonimizzato20205 il
6 risposte
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

  • Metti una printf() subito dopo la scanf(), stampando il carattere letto e così capirai che il problema non è lo switch...
  • Un indizio ... prova ad aggiungere un

    case '\n': break;
  • 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...
  • 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 ...
  • Altro indizio: quanto è lungo un char?
  • E aggiungerei ... cosa è un IO bufferizzato?
Devi accedere o registrarti per scrivere nel forum
6 risposte