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.