Ir ao conteúdo
  • Cadastre-se

C "Operadores Lógicos" para char


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

2 minutos atrás, Lucca Rodrigues disse:

@AndreyPradoAP O que você quer dizer?

Ou melhor, o que você quer fazer?

 

Operadores em C e C++: link.

queria fazer que quando o usuário digitasse algo diferente de "f" ou "m", isso não seria aceito e o usuário teria que digitar novamente.

 

Meu código está assim:

 

printf("Digite o sexo do canidato(m-Masculino/f-Feminino)\n");
        fflush(stdin);
        gets(sexo);
        
        if((strcmp(sexo,"f")==1)||(strcmp(sexo,"m")==1)){
            certo=1;
            while(certo==1){
                printf("Curso Inválido, digite novamente\n");
                scanf("%d",&curso);    
                if((strcmp(sexo,"f")==1)||(strcmp(sexo,"m")==1)){
                    certo=1;
                }else{
                    certo=0;
                }
            }
        }

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@AndreyPradoAP Para facilitar a visualização, use essa ferramenta aqui para postar códigos:

image.png.64e12da8bccac3ff0d4c72a20396e7a8.png

Não se esqueça de escolher a opção C, C++, C#, Java, Objective C.

Não se esqueça também de postar todo o código, isso inclui as bibliotecas, a main, as variáveis, etc.

 

A respeito do seu programa...

Não use a função gets(). Se você entrar com uma string maior do que o tamanho declarado, pode ocasionar um buffer overflow, use a função scanf() em vez disso.

Você não precisa comparar a string sexo com uma string que um único caractere. Ao invés disso, compare sexo[0] (que é onde a letra que você inseriu está) com o caractere em questão.

Faça um loop para caso sexo[0] != 'm' && sexo[0] != 'f' (caso o caractere inserido for diferente de 'm' e de 'f'), o caractere seja cobrado novamente.

Como a função usada será scanf(), limite a quantidade de caracteres para 1, ou então declare um char e não uma string, o que faz muito mais sentido nesse caso: caso sexo != 'm' && sexo != 'f', o caractere deve ser cobrado novamente.

 

Teste isso:

#include <stdio.h>

int main()
{
    char sexo;
    printf("Digite o sexo do canidato (m/f): ");
    scanf("%c%*c", &sexo); // Lê caractere e deleta /n
    while (sexo != 'm' && sexo != 'f'){ // Se for diferente de 'm' e 'f'
        printf("\nSexo inválido! Digite novamente (m/f): ");
        scanf("%c%*c", &sexo);
    }
    return 0;
}
  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!