TransWikia.com

Seletor de sexo em condicional if

Stack Overflow em Português Asked by Diego Roney on January 4, 2022

Como faria nesse código pra pegar o sexo da pessoa e exibir no printf()?

Já vi muitas atividades em que na condição do if, se usava muito números e me bateu uma dúvida: E se fosse com letras?

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

int main()
{
  char sex[5], nome[200], f, m;

  printf("n Digite o seu nome: " ); //pegar o nome da pessoa
  scanf(" %[^n]s", &nome);

  printf("n Digite seu sexo f ou m: "); //pegar o sexo da pessoa
  scanf("%s", &sex);

   if(sex == m)
    {
        printf(" bem vindo Senhor %sn", nome); // se for homem
    }

   if (sex == f) 
    {
       printf(" Bem vinda Senhora %sn", nome); // sefor mulher
    }

  else
   {
       printf("n ERRO! n");
   }

getchar();  
return 0;   
}

3 Answers

Você pode fazer

char sex;

Quando for pegar o valor use scanf("%c",&sex) ou scanf("%s",&sex) e para comparar você usa if(sex == 'm') use aspas simples pois é somente um caractere.

#include <stdio.h>

int main() {
    char sex;
    printf("Digite seu sexo f ou m:");
    scanf("%c", &sex);

    if (sex == 'm') printf("Masculino");
}

Answered by Felipe Henrique on January 4, 2022

Neste caso só precisa uma caractere, não precisa mais que isto, conforme o código já mostra. Então não muda quase nada.

#include <stdio.h>

int main() {
    char sex, nome[200];
    printf("Digite o seu nome: ");
    scanf(" %[^n]s", nome);
    printf("nDigite seu sexo f ou m:"); //pegar o sexo da pessoa
    scanf("%c", &sex);
    if (sex == 'm' || sex == 'M') printf("Bem vindo Senhor %sn", nome);
    else if (sex == 'f' || sex == 'F') printf("Bem vinda Senhora %sn", nome);
    else printf("n ERRO! n");
}

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Se quiser lidar com a palavra já tem uma resposta sobre isto. Outro exemplo.

Answered by Maniero on January 4, 2022

Primeiramente

if(sex == m)
    {
        printf(" bem vindo Senhor %sn", nome); // se for homem
    }

Esse modo de comparação está errado. Pois a variável sex é um vetor de char, ou melhor, string como quiser chama-lo. Essa comparação == é para números (inteiros, float...) ou pode usar mas o m tem que estar assim 'm' e o sex tem que especificar a posição do vetor para referir o caractere propriamente dito; E seu m e f são variáveis e não possuem nada nelas, para usa-las seria necessário realizar um scanf de m ou f ou atribuir um caractere f='f'...

Você pode usar strcmp para comparar por exemplo:

if(strcmp(sex,'m')==0) 
{
printf(" bem vindo Senhor %sn", nome); // se for homem
 }

Requisitos:

Para usar o strcmp é necessário usar a biblioteca #include < string.h > .

Para melhorar seu código:

scanf("%s", &sex);

Você poderia usar apenas um getch() ou getche() já que a entrada é apenas uma letra;

Requisitos: Para utilizar a função getch ou getche é necessário incluir a biblioteca conio.h no programa;

Answered by Maurício Z.B on January 4, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP