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. Show 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; }
Exemplo: if (strcmp (nome, "Teste") == 0) ...
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:
[/quote]
Só complementando, para comparar ignorando letras maiúsculas/minúsculas, basta usar o stricmp. Valeu
Faça um programa para comparar se duas strings são iguais. Comentários: este é mais um exercício para exercitarmos laços de repetição. Esta série referem-se as strings pois, sabemos que em C as strings se assemelham a um vetor (char string[]). Linguagem CNa linguagem C, como dito, sabemos que as strings em questão são 2 vetores e que o caminho mais provável seja comparar os valores de ambos os vetores um a um. Utilize o código abaixo para encontrar a sua solução. #include <stdio.h> #include <assert.h> // // Função que compara se duas string são iguais // int compararStrings(char str1[], char str2[]) { // Aqui entra a lógica do programa. } // // Testes // int main() { char ola[] = "ola"; char ola2[] = "ola"; assert(1 == compararStrings(ola, ola2)); return 0; } Solução na linguagem C// // Função que compara se duas string são iguais // int compararStrings(char str1[], char str2[]) { int i = 0; do { if(str1[i] != str2[i]) { return 2; } i++; } while(str1[i] != 0); return 1; } Desafio na linguagem CA função abaixo também funciona, porém a implementação dela é bem diferente. O desafio é entender o que está acontecendo. int compararStrings(char str1[], char str2[]) { int i = 0; for (i = 0; str1[i] == str2[i]; i++) { if (str1[i] == 0) { return 1; } } return 2; } Linguagem PythonEm Python, no terminal, vemos que nosso objetivo (compara duas strings) é facilmente alcançado. >>> "palavra" == "palavra" True Como seria a solução se tivéssemos que construir um laço de repetição? Vamos praticar… # -*- coding: utf-8 -*- # # Seu código # def compararString(a, b): pass # # Seu teste # cor1 = "laranja" cor2 = "amarelo" assert not compararString(cor1, cor2) assert compararString(cor1, cor1) Solução na linguagem Python# -*- coding: utf-8 -*- # # Seu código # def compararString(a, b): i = 0 while i < len(a): if a[i] != b[i]: return False break i += 1 return True # # Seu teste # cor1 = "laranja" cor2 = "amarelo" assert not compararString(cor1, cor2) assert compararString(cor1, cor1) Linguagem JavaScriptEm JS temos a mesma facilidade…. > "laranja" == "laranja" true > "laranja" != "amarelo" true > O laço de repetição é trivial. |