Problemas com strcmp (eu acho)

1. Problemas com strcmp (eu acho)

Danylo Santoro
dsantoro

(usa Ubuntu)

Enviado em 20/06/2013 - 14:14h

Boa tarde amigos do VOL.

Estou fazendo um trabalho para a faculdade e estou empacado em um certo lugar, segue o código:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

main()

{
struct grupo{
int nomeGrupo;
char selecao1[20];
char selecao2[20];
char selecao3[20];
char selecao4[20];
};

struct grupo cadastra[8];
FILE *selecoes;
char procGrupo;
int x;

selecoes = fopen("C:\\Users\\Danylo\\Desktop\\Projeto Integrador\\cadastraselecoes.txt", "r+");

printf("Digite o grupo desejado. (ex.: A, B. C, ...:");
scanf("%s", &procGrupo);
system("cls");


while (!feof(selecoes))
{
for(x = 0; x <= 7; x++)
{
fscanf( selecoes, "%c %s %s %s %s",&(cadastra[x].nomeGrupo),
&(cadastra[x].selecao1),
&(cadastra[x].selecao2),
&(cadastra[x].selecao3),
&(cadastra[x].selecao4));
if(strcmp(cadastra[x].nomeGrupo, procGrupo)== 0){
printf("Grupo: %c\n", cadastra[x].nomeGrupo);
printf("%s\n", (cadastra[x].selecao1));
printf("%s\n", (cadastra[x].selecao2));
printf("%s\n", (cadastra[x].selecao3));
printf("%s\n", (cadastra[x].selecao4));
} else {
printf("Nenhum grupo encontrado!\n");
}
}// Termina for
} // Termina while
fclose(selecoes);
getch();

}

Pontos a serem resalvos:

Tenho o arquivo cadastraselecoes gerado e preenchido:

A Franca Brasil Noruega Gana
B Coreia Japao China India
C Marrocos Nigeria Africa Sudao
D Canada USA Mexico Peru
E Grecia Alemanha Luxemburgo Inglaterra
F Guine Holanda Suica Suecia
G Zambia America Inglaterra Austria
H Australia Finlandia Russia Afeganistao

Ok são exemplos rs.

As letras "A", "B", "C" etc eu criei usando uma variavel do tipo int que iniciava com 65 (A em ANSII) e
era incrementada até chegar no H. Na hora de salvar em arquivo eu a transformei em CHAR e assim se assume uma letra invés de numero rs.

Estou tentando fazer uma busca mas da warning em strcmp e nao funciona.

Espero que vocês possa me ajudar.




  


2. Re: Problemas com strcmp (eu acho)

???
gokernel

(usa Linux Mint)

Enviado em 20/06/2013 - 15:40h

O prototipo é assim:
int strcmp ( const char * str1, const char * str2 );

Vc está comparando um ( int ) com um ( char único ).


JEREMIAS 9:23,24:
-------------------------------------------------
"Assim diz o SENHOR: Não se glorie o sabio na sua sabedoria, nem se glorie o forte na sua força; não se glorie o rico nas suas riquezas;

Mas o que se gloriar glorie-se nisto: em me conhecer e saber que eu sou o SENHOR, que faço beneficencia, juizo e justiça na terra; porque destas coisas me agrado, diz o SENHOR."
-------------------------------------------------




3. Re: Problemas com strcmp (eu acho)

Danylo Santoro
dsantoro

(usa Ubuntu)

Enviado em 25/06/2013 - 13:26h

Fiz um teste com um outro trabalho:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
/*2 - Faça um algoritmo que mostre um menu com 2 opções:
1 - Cadastro
2 - Pesquisa
0 - Sair
Se a opção for 1 devem ser gravadas informações de clientes em um arquivo. São essas as informações:
código do cliente inteiro, nome do cliente caracter e endereço do cliente caracter.
Se a opção for 2, deve ser solicitado ao usuário o nome do cliente e deve ser realizada a pesquisa do cliente pelo nome.
Utilizar registro (struct) para armazenar as informações temporariamente até gravar no arquivo.
Ficar executando o programa até o usuário digitar 0.*/
struct cadastro{
int CodCliente;
char NomeCliente[20];
char EndCliente[20];
};

struct cadastro cadastrar[1];
FILE *cad;

void cadastrarClientes()
{


cad = fopen("C:\\Users\\Danylo\\Desktop\\Trabalho3\\clientes.txt", "a+");

printf("Digite um codigo para o cliente:");
scanf("%d", &(cadastrar[1].CodCliente));
printf("Digite o nome do cliente:");
scanf("%s", &(cadastrar[1].NomeCliente));
printf("Digite o endereco:");
scanf("%s", &(cadastrar[1].EndCliente));

fprintf(cad, " %d %s %s", (cadastrar[1].CodCliente), &(cadastrar[1].NomeCliente), &(cadastrar[1].EndCliente));

}

void buscarClientes()
{

cad = fopen("C:\\Users\\Danylo\\Desktop\\Trabalho3\\clientes.txt", "r+");
char nomeConsulta;

printf("Digite um nome para consulta:");
scanf("%s", &nomeConsulta);

while(!feof(cad))
{

fscanf( cad, "%d %s %s", &(cadastrar[1].CodCliente), &(cadastrar[1].NomeCliente), &(cadastrar[1].EndCliente));

if(strcmp(cadastrar[1].NomeCliente, nomeConsulta) == 0)
{
printf("O codigo do cliente eh: %d\n", cadastrar[1].CodCliente);
printf("O nome do cliente eh: %s\n", cadastrar[1].NomeCliente);
printf("O endereço do cliente eh: %s\n", cadastrar[1].EndCliente);
}
}

fclose(cad);
//getch();


}

main()
{
cadastrarClientes();
system("cls");
buscarClientes();
getch();
}


Agora estou comparando string com string mas não funciona e da o mesmo warning.
Desde já agradeço.


4. Re: Problemas com strcmp (eu acho)

???
gokernel

(usa Linux Mint)

Enviado em 25/06/2013 - 14:12h

Tente modificar para isso:
-------------------------------------------------

char nomeConsulta[255];

-------------------------------------------------

Com essa modificação então sim, vc estará comparando 2 "strings".



5. Re: Problemas com strcmp (eu acho)

Danylo Santoro
dsantoro

(usa Ubuntu)

Enviado em 25/06/2013 - 14:19h

Aeee deu certo. Não acredito que era assim simples rs.
Pior que no exemplo da faculdade também não esta assim.

Muitíssimo obrigado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts