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

Publicado por André em 20/07/2010

[ Hits: 10.541 ]

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

Iniciando com a linguagem Java

Prism - Transforme sites em aplicativo

Rodando diversos formatos de vídeo sem problemas em seu Debian

Instalando flashplayer no Linux

Alterando mensagem ao logar no SSH

Leitura recomendada

Mais uma dica de curso de C e C++

Limpando o buffer do teclado em C

Checagem de erro do scanf

Curso de linguagem C pela UFMG

Exibindo código ASCII das teclas

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts