Ir ao conteúdo
  • Cadastre-se
joaomarcosemufem

C Problema com if e switch em liguagem c

Recommended Posts

Olá. Estou com problemas nesse código.

O programa serve para retornar um mês correspondente a um número digitado.

Ao rodar o programa e inserir um número que cairia no default do switch,

o programa também executa a ação que está dentro do if, quando não era para executar visto que 

o conteúdo da da variável mes não foi alterado e é igual a "nulo", não satisfazendo a condição.

 Segue o código:


 

#include <stdio.h>
#include <stdlib.h>
#include<string.h>


int main(){
    int nummes;
    char mes[15] = "nulo";

    printf("Digite o número do mes: ");
    scanf("%d", &nummes);

    switch (nummes){

        case 1:
            strcpy(mes, "Janeiro");
            break;
        case 2:
            strcpy(mes, "Fevereiro");
            break;
        case 3:
            strcpy(mes, "Março");
            break;
        case 4:
            strcpy(mes, "Abril");
            break;
        case 5:
            strcpy(mes, "Maio");
            break;
        case 6:
            strcpy(mes, "Junho");
            break;
        case 7:
            strcpy(mes, "Julho");
            break;
        case 8:
            strcpy(mes, "Agosto");
            break;
        case 9:
            strcpy(mes, "Setembro");
            break;
        case 10:
            strcpy(mes, "Outubro");
            break;
        case 11:
            strcpy(mes, "Novembro");
            break;
        case 12:
            strcpy(mes, "Dezembro");
            break;
        default:
            printf("O numero informado nao corresponde a nenhum mes!");
     }
        if(mes != "nulo")
            printf("\nO numero informado corresponde ao mes de %s \n", mes);

        system("pause");

}

Obrigado por tentar me ajudar.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia. Você está comparando strings no condicional. Então não pode usar '!='.

Use strcmp.

  • Curtir 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

@joaomarcosemufem    faça como o   @Math.Pi   disse ,  pois na linguagem   c  existe um comando para comparar strings  que é  o strcmp  ,  então você colocaria essa linha assim  :

if(strcmp(mes,"nulo") != 0)

 

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×