Ir ao conteúdo

Problema com comparação de String - Ajuda


lenadro20099

Posts recomendados

Postado

O problema e o seguinte, tenho um trabalho para entregar na facul, mas não estou conseguindo fazer um código funcionar (esse código eu só estou usando para tentar entender como funciona a comparação de string).

Código

______________________________________________________

#include<stdio.h>
#define MAX 100
int main()
{
int i, letra, o;
char string[MAX], string2[MAX];

printf("Digite um nome:");
scanf("%[^\n]",&string);
printf("Nome digitado : %s", string);

for(i=0;i<MAX;i++)
{
if(string[i]=='\0')
break;
if(string[i]!=' ')
letra ++;
}
printf("\n\n%d letras\n\n", letra);
system("pause");

printf("\nDigite outro nome:");
scanf("%s",string2);


if(strcmp(string, string2)==0);
{
printf("nomes iguais - %d\n\n", strcmp(string,string2));
}

if(strcmp(string, string2)==-1)
{
printf("\n\nnomes diferentes - %d\n\n", strcmp(string,string2));
}


system("pause");
return 0;
}

________________________________________________________

no código eu digito um primeiro nome, o programa apresenta na tela o nome digitado e quantas letras ele tem, então e pedido um segundo nome, apos digitar o nome ele compra utilizando "strcmp" e apresenta na tela se o nome e igual ou diferente.

O problema e que quando os nomes são iguais o programa funciona corretamente, mas quando e diferente ele passa pelos 2 "if" e apresenta que e igual e diferente.

eu uso dev c++ com win xp 64bits - não sei se isso vai fazer alguma diferença.

Postado

Vários errinhos de sintaxe, o programa nem compila na verdade.

Faltam as bibliotecas stdlib.h e string.h. Tem um ; depois do if que não deveria. Você não inicializou a variável "letra" com valor, ela contém apenas lixo. Use if-else, ao invés de 2 if's. Dê uma olhada abaixo:


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100

int main()
{
int i, letra=0, o;
char string[MAX], string2[MAX];

printf("Digite um nome:");
scanf("%[^\n]",&string);
printf("Nome digitado : %s", string);

for(i=0;i<MAX;i++)
{
if(string[i]=='\0')
break;
if(string[i]!=' ')
letra++;
}
printf("\n\n%d letras\n\n", letra);

printf("\nDigite outro nome:");
scanf("%s",string2);


if(strcmp(string, string2)==0)
{
printf("nomes iguais - %d\n\n", strcmp(string,string2));
}

else
{
printf("\n\nnomes diferentes - %d\n\n", strcmp(string,string2));
}


system("pause");
return 0;
}

Postado

Muito Obrigado, e me desculpe pela minha falta de atenção :D

Eu corrigi o meu codigo e esta funcionando, porém quando tento comparar strings compostas ( utilizando "%[^\n]" ao invés de "%s") da um erro e o programa não compara.

a unica alteração que eu fiz para tentar isso foi realmente a troca da "%s" do string2 para "%[^\n]".

___

e aproveitando para que exatamente e foram utilizadas as duas bibliotecas que eu tinha esquecido de usar (stdlib.h e string.h).

a stdlib.h não e utilizada somente para trabalhar com arquivos ???

Postado

Se me permite a intromissão, quem trabalha com arquivos é stdio.h

O stdlib.h serve para o system("pause"); que você deu, o qual eu acho desnecessario, pois prejudica a portabilidade, e seria melhor ter usado um getchar();, não acha?

A string.h serve pra usar o strcmp

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...