Ir para conteúdo

POWERED BY:

Arquivado

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

milaBastos

[Resolvido] Comparando strings por meio da utilização de struct e

Recommended Posts

Pessoal, primeiramente boa noite.

 

Tem um tempo que já estou trabalhando com a criação de arquivos, para a gravação dos dados utilizando estrutura.

 

Fiz a pesquisa de dados comparando nomes dentro do arquivo, mas não consegui mostrar os dados de determinados alunos que estão cadastrados com o mesmo nome e sobrenomes distintos.

 

Quero mostrar todos os alunos cadastrados que tem o nome iniciado por uma letra qualquer ou se tiver Dois alunos que se chamem Bruno menezes e Bruno silva.e o usuário digitar somente bruno apareça na tela os dados referentes aos dois alunos.

 

Para tal fiz a seguinte função:

 

//Funçâo PESQUISAR ALUNO---------------------------------------------------------
void pesquisarAluno(FILE *arq_aluno){
    struct ALUNO al;
    char PesquisaNome[20];
    int  tamanhoNome,tamanhoPesquisa,controle;
    
    fseek(arq_aluno,0,SEEK_SET);
    

    system("cls");
    printf("\n\n\tSiGE - Sistema de Gerenciamento Escolar  - v1.0\n\n\n");
    printf("\t\t - *.* PESQUISAR ALUNO *.*\n\n");	
	printf("\t\t    Digite o nome do aluno a ser pesquisado: ");
    fflush(stdin);
    gets(PesquisaNome);
    
    tamanhoNome=strlen(al.nome);
    tamanhoPesquisa=strlen(PesquisaNome);
    
           	printf("\n\t.........Resultado da Busca.................");  
    
 while (!feof(arq_aluno)){
  fread(&al,sizeof(struct ALUNO),1,arq_aluno);
   if(!feof(arq_aluno)){         	
      
    for(controle=0;controle<tamanhoNome;controle++){
 	
//acho que o erro deve ta aqui:
   if(strncmp(al.nome[controle+1],PesquisaNome,tamanhoPesquisa)==0){
         	
           	printf("\n\t|........................................|");
           	printf("\n\t| Matricula: %s                          |",    al.matricula);
           	printf("\n\t| Nome: %s                           	|",     	al.nome);
           	printf("\n\t| Mae: %s                                |",          al.mae);
           	printf("\n\t| Data de Ingresso: %s               	|",al.data_ingresso);
           	printf("\n\t| Excluido: %d                       	|", 	al.excluido);
           	printf("\n  |........................................|\n\n");
   	
      }
    }
   }
 }
 getch();
}    
Se tiverem alguma sugestão, ficarei grata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ ou - é algo assim:

// Pega o fragmento do nome que deseja pesquisar.
strlwr(cFragmento); //deixa tudo em minusculo
// Vai lendo os registros do arquivo e pegando os nomes
strcpy(cNomeOriginal, cNome); //cria uma copia do nome que você pegou do arquivo
strlwr(cNome); //deixa eu minusculo tambem
if (strstr(cNome, cFragmento)) {  //verifica se tem esse fragmento no nome
    iAchou = 1;
    cNomeOriginal[strlen(cNomeOriginal)-1] = '\0';
    printf("Codigo = %s\n", cCod);
}
//fecha o arquivo
if (iAchou == 0) puts(" Nao existem clientes com esse fragmento de nome.");

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ ou - é algo assim:

// Pega o fragmento do nome que deseja pesquisar.
strlwr(cFragmento); //deixa tudo em minusculo
// Vai lendo os registros do arquivo e pegando os nomes
strcpy(cNomeOriginal, cNome); //cria uma copia do nome que você pegou do arquivo
strlwr(cNome); //deixa eu minusculo tambem
if (strstr(cNome, cFragmento)) {  //verifica se tem esse fragmento no nome
    iAchou = 1;
    cNomeOriginal[strlen(cNomeOriginal)-1] = '\0';
    printf("Codigo = %s\n", cCod);
}
//fecha o arquivo
if (iAchou == 0) puts(" Nao existem clientes com esse fragmento de nome.");

[]s

 

Obrigada....

Vou tentar juntar o que tenho com o que me passou!!!

 

 

 

 

Funcionou!!!...\o/\o/\o/

 

Obrigada de novo pela dica...

Se cuida.

 

//Funçâo PESQUISAR ALUNO---------------------------------------------------------
void pesquisarAluno(struct ALUNO aluno,FILE *arq_aluno){
    char PesquisaNome[20];
    char nomeAluno[20];
    int  Achou =0;
   
    fseek(arq_aluno,0,SEEK_SET);
    
   	system("cls");
   	printf("\n\t ............................................................... ");     	
   	printf("\n\t|                                                           	|");
   	printf("\n\t| 	*.* SiGE - Sistema de Gerenciamento Escolar- v1.0 *.* 	|");   	
   	printf("\n\t|.............................................................. |");
           	
   	printf("\n\t|.::::::::::::::::::::::::.MANTER ALUNO.:::::::::::::::::::::::.|");
   	printf("\n\t|                       	PESQUISAR                       	|");
	
       printf("\t\t    Digite o nome do aluno a ser pesquisado: ");
   	fflush(stdin);
   	gets(PesquisaNome);
    
      //Pega o fragmento do nome que deseja pesquisar.
      strlwr(PesquisaNome); //deixa tudo em minusculo
    
 
      printf("\n\n\t|.::::::::::::::::::::.RESULTADO DA BUSCA.:::::::::::::::::::::.|");  
    
 while(!feof(arq_aluno)){
  fread(&aluno,sizeof(struct ALUNO),1,arq_aluno);
    if(!feof(arq_aluno)){         	
    // Vai lendo os registros do arquivo e pegando os nomes
    strcpy(nomeAluno, aluno.nome); //cria uma copia do nome que esta no arquivo  
    strlwr(aluno.nome); //deixa eu minusculo tambem
        if (strstr(aluno.nome,PesquisaNome )){//verifica se tem esse fragmento no nome
        Achou = 1;
        nomeAluno[strlen(nomeAluno)-1] = '\0';
   
           	printf("\n\t\t........................................");
           	printf("\n\t\t| Matricula: %s                          ",    aluno.matricula);
           	printf("\n\t\t| Nome: %s                           	",        aluno.nome);
           	printf("\n\t\t| Mae: %s                                ",          aluno.mae);
           	printf("\n\t\t| Data de Ingresso: %s               	",aluno.data_ingresso);
           	printf("\n\t\t| Excluido: %d                       	", 	aluno.excluido);
           	printf("\n\t\t........................................\n");
    
        }
    }
 }
 if (Achou == 0)
 puts("\n\t|    *.* Nao existem alunos com este nome ou parte dele *.* 	|    ");
 getch();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.