Olá Galera. Eu já tenho conhecimento em programação, mas iniciei em C há alguns dias apenas.
Eu estou praticando Operadores Relacionais e Operadores Lógicos.
Eu tenho um char nome[5]; e o valor que é atribuido a ele não bate com a String que eu comparo. Gostaria de ajuda para resolver isso.
Estou usando a string "Teste" como exemplo, eis o código-fonte:
#include <stdio.h>
int main(void) {
char nome[5];
int idade;
printf("Escreva o seu nome: "); //Escreva Teste
scanf("%s", &nome);
printf("Escreva a sua idade: ");
scanf("%d", &idade);
if(idade > 0 && nome == "Teste") {
printf("Resultado: Encontrado");
} else {
printf("Resultado: Nao encontrado");
}
return 0;
}
Se uma coisa compila em C, não quer dizer que vai funcionar
Você precisa ler sua apostila. O método para comparar 2 strings em C se chama “strcmp”.
Exemplo:
if(strcmp(nome,"Teste")==0)...
Sempre que você criar uma string em C, você precisa definir um array de char com mais espaço que você pensa em usar, porque pelo menos o terminador da string (\0) é necessário guardar. No seu caso, em vez de ser econômico, declare com char nome [128].
M
mi.rodrigues
Cara, segue o site abaixo que pode solucionar boa parte das tuas dúvidas em C…
Só a título de curiosidade, quando você faz nome == “Teste” você está comparando o valor de endereço deles na memória.
E
Erick_Ribeiro
entanglement:
1) C != C++
2) Se uma coisa compila em C, não quer dizer que vai funcionar
3) Você precisa ler sua apostila. O método para comparar 2 strings em C se chama “strcmp”.
Exemplo:
if(strcmp(nome,"Teste")==0)...
Sempre que você criar uma string em C, você precisa definir um array de char com mais espaço que você pensa em usar, porque pelo menos o terminador da string (\0) é necessário guardar. No seu caso, em vez de ser econômico, declare com char nome [128].
Obrigado já corrigi o que estava errado e agora está funcionando. Eu não sabia da existência do método. Na verdade esse exemplo não está no livro que eu estou lendo.
J
jeanmalvessi
Só complementando, para comparar ignorando letras maiúsculas/minúsculas, basta usar o stricmp.