Switch em C, e se a opção for inválida?

Publicado por André em 20/07/2010

[ Hits: 15.658 ]

Blog: http://127.0.0.1

 


Switch em C, e se a opção for inválida?



Uma curiosidade de muitos iniciantes em programação é sobre o switch, especificadamente quando se fala em criar menus. Algo como:

switch (variavel) {
    case 1:
        //Conteúdo do item 1 do menu
    break;

    case 2:
        //Conteúdo do item 2 do menu
    break;

    case 3:
        //Conteúdo do item 3 do menu
    break;
}

O que muitos se perguntam é que se, por exemplo, o usuário do programa digitasse 4, sendo que apenas temos 3 opções. O que iria acontecer é que o programa, como não tem nenhuma rotina para o case 4, ou melhor, o case 4 nem existe e portanto como não há o que fazer, ele iria parar a sua execução, como um getchar(). Vamos usar o default!

Vou mostrar algo bem interessante, neste caso quando digitassem 4 ou qualquer outro número considerado "inválido", nosso programa exibiria uma mensagem dizendo que a opção é inválida e voltaria ao início.

#include <stdio.h>

int main()
{
    int opcao;

    printf("Selecione uma opcao: \n\n[1] Opcao 1 \n[2] Opcao 2 \n >> ");
    scanf("%d",&opcao);

    switch(opcao) {
        case 1:
            printf("Voce escolheu a opcao 1 \n\n");
        break;

        case 2:
            printf("Voce escolheu a opcao 2 \n\n");
        break;

        default :
            printf("Opcao invalida! \n\n");
            return main();

    }

    return (0);
}

Até mais...

Outras dicas deste autor

Try Python: Interpretador Python online

return main(); (fatal) - C++

Geany - Ferramenta de qualidade para desenvolvimento

Causando BufferOverflow em servidores rodando o FreeFloat

Nmap online

Leitura recomendada

Instalando a biblioteca libxml2

Compilando no Code::Blocks

Checagem de erro do scanf

Fatorial usando recursividade

Como limpar a tela em C

  

Comentários
[1] Comentário enviado por davimendes em 28/09/2011 - 11:02h

Vlw!!! Joguei uma idéia fora no meu trabalho de alg por não saber como se fazia isso!!! (estava com preguiça de trocar o switch por if encadeado...)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts