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

Publicado por André em 20/07/2010

[ Hits: 12.645 ]

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

Crie sua distro via internet, sem escrever uma linha de código

Getchar(); sendo ignorado? Não mais!

Compilando com o javac

Prism - Transforme sites em aplicativo

Nasm - um ótimo compilador Assembler

Leitura recomendada

Linguagem C++ (Curso gratuito)

Site para quem está iniciando em C

Pressionar tecla e não precisar pressionar ENTER

Recursão em C

Qt 4.5 (Desenvolvimento multi-plataforma em C++ com Qt)

  

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