Pular para o conteúdo

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

Dica publicada em C/C++ / Introdução
André andrezc
Hits: 16.592 Categoria: C/C++ Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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);
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Até mais...

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Prism - Transforme sites em aplicativo

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

Waybackmachine: Relembre os velhos tempos

Causando BufferOverflow em servidores rodando o FreeFloat

CPU-G: Capturando informações de hardware no Linux

Pressionar tecla e não precisar pressionar ENTER

Sobrecarregamento de operadores

Limpando o buffer do teclado em C

Qt - Adicionando uma foto em Label (QLabel)

Imprimir na mesma linha em C

#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

Entre na sua conta para comentar.