[Resolvido] Como comparar Strings em C?

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; }

  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) ...
  1. 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].

Cara, segue o site abaixo que pode solucionar boa parte das tuas dúvidas em C…

http://www.cplusplus.com/reference/clibrary/

Sobre comparar duas strings em C…

http://www.cplusplus.com/reference/cstring/strcmp/

Só a título de curiosidade, quando você faz nome == “Teste” você está comparando o valor de endereço deles na memória.

[quote=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) ...
  1. 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].

[/quote]
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.

Só complementando, para comparar ignorando letras maiúsculas/minúsculas, basta usar o stricmp.

Valeu :wink: