to começando agora na programação e estou com uma duvida, poderiam me ajudar? Quero que o nome digitado pelo usuario seja recebido pelo char nome, apos isso, if nome digitado corresponder a "joao", quero que o programa mostre "bom dia joao". else, mostre "voce nao é o joao". Oque esta errado?
int main (void)
{
char nome;
printf("digite seu nome\n");
scanf("%c" , &nome);
if (nome == joao)
printf("Bom dia joao");
else
printf("voce nao é o joao");
return 0;
}
Respostas
1°:
'char nome'
Aqui você declarou apenas um 'char', ou seja, você irá receber apenas um caracter. Basicamente, no terminal você pode digitar um nome, mas irá ser amarzenado na variável apenas a primeira letra.
2°:
'nome == joao'
Aqui você está verificar se o char nome é igual a uma variável inexistente.
Você não declarou nenhuma variável chamada joao. No caso, penso que você queria comprar com o texto joao, mas para isso, você deve utilizar aspas : nome == "joao".
Outra coisa, você não pode fazer comparações de String dessa forma, ou seja, não pode comparar uma cadeia de carateres com outra cadeia de caracteres, somente um char com outro char.
3°:
Para ler um nome em c, você deve utilzar o conceito de "array", que significa uma cadeia de determinado tipo de variável.
Desta forma, você declara um array de char, no código abaixo denominado 'char nome[100]'. Com isso, é possível receber um nome de até 100 letras, ou qualquer outro carácter.
No scanf, para ler esse array, você deve substituir o "%c", para "%s", e também deve retirar o '&' da variável, pois quando você passa somente o nome do array, já está passando a sua referência.
Para verificar se o nome recebido é igual a "joao", você deve verificar se cada carácter do array nome é igual a cada carácter do nome "joao". É utilizado um while para isso.
Lembre-se que no final de cada array de char, encontra-se um carácter especial "\0" que indicia o fim de uma cadeia de carácter, por isso é utilizado no laço de repetição.
a variável 'igual' é do tipo int, mas ela foi declarada somente para sabermos se o nome é igual a "joao". Desta forma, o 0 significa false, enquanto o 1 significa true. Assim, teremos capacidade de verificar o valor de igual e imprimir a mensagem de acordo com o resultado.
Bons estudos!!
CÓDIGO ABAIXO (Anexei, também, uma imagem do código em uma IDE)
____________________________________
#include <stdio.h>
int main()
{
char nome[100];
char joao[] = "joao";
printf("digite seu nome\n");
scanf("%s", nome);
int i = 0, igual = 1;
while(nome[i] != '\0' && i < 4){
if(nome[i] != joao[i]){
igual = 0;
break;
}
i++;
}
if(nome[i] != '\0' || joao[i] != '\0'){
igual = 0;
}
if(igual){
printf("Bom dia joao\n");
}else{
printf("voce nao é o joao");
}
}