Jump to content


Photo

Problema Com Função [ajuda]


  • Faça o login para participar
1 reply to this topic

#1 vhbsouza

vhbsouza

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 16/10/2008, 11:13

Oi.
Eu estou fazendo um programa que faz consultas dentro de um vetor(array).

Onde o usuário digita o nome ...e se o nome não estiver dentro de nenhuma das variáveis do vetor ... a função deve retornar -1, mas o problema é que a função sempre retorna -1, mesmo quando eu digito um nome que exixte dentro do vetor.

vocês podem me ajudar?

Aqui está o codigo da parte da consulta:
//Consultas

	// Problema na parte da consulta.... a função buscaCidade está sempre retornando -1.
	bus_cid1[21]=' ';

   printf("Leia o nome da Cidade 1:\n");
	while (scanf("%s",bus_cid1) && strcmp(bus_cid1,"fim")!=0)
   {
   	fflush(stdin);
   	while ((cid1=buscaCidade(bus_cid1))==-1) // essa função deve retornar -1 se não achar a cidade ou
		{
			printf("Leia o nome da Cidade 1:\n");
			scanf("%s",&bus_cid1);
		 fflush(stdin);
		  }

	 	printf("Leia o nome da Cidade 2:\n");
	   	scanf("%s",&bus_cid2);

		while ((cid2=buscaCidade(bus_cid2))==-1) // essa função deve retornar -1 se não achar a cidade ou
		{
			printf("Leia o nome da Cidade 2:\n");
			scanf("%s",&bus_cid2);
		 fflush(stdin);
		}

	 	printf("Leia o nome do tipo do veiculo:\n");
	   	scanf("%s",&bus_vel);

		while ((vel=buscaCidade(bus_vel))==-1) // essa função deve retornar -1 se não achar a cidade ou
		{
			printf("Leia o nome do tipo do veiculo:\n");
			scanf("%s",&bus_vel);
		 fflush(stdin);
		}

Trecho de Código da função:

int buscaCidade(char nome[21])
{
	int x,i;
   x=-1;
   for(i=0;i<4;i++)
   {
   	if(nome==cidades[i])
		  x=i;
	}
   return (x);

}


#2 ffmm

ffmm

    Veterano

  • Usuários
  • 1224 posts
  • Sexo:Não informado

Posted 31/10/2008, 14:51

Para comparar strings não use o operador ==. Como strings são arrays de caracteres, quando você faz referência a apenas o nome dela (ex.: nome), você está acessando o endereço dela. Para comparar strings, use strcmp().

Ex.:
int buscaCidade(char nome[21])
{
	int x,i;
   x=-1;
   for(i=0;i<4;i++)
   {
	   if(strcmp(nome, cidades[i]) == 0) // ela retorna 0 caso as strings sejam iguais
		  x=i;
	}
   return (x);

}
[Por curiosidade: sua função sempre retornava -1 pois, como nome e cidades[i] são strings diferentes, e estão em posições de memória diferentes, o endereço pra que elas apontam é diferente.]




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq