[RESOLVIDO]Dúvida em C

2 respostas
Furyeyes

Olá estou fazendo um programa em C que faz cadastro de alunos, primeiro eu armazeno em .txt o Ra e o Nome do aluno, depois eu faço a busca pelo Ra.
O problema é que quando comparo o Ra digitado com o Ra do arquivo, eles são iguais mas o strcmp() volta != de 0.

Obs: Rodei com o Debug e vi que as duas variaveis são iguais!

TRECHO QUE FAZ A BUSCA NO ARQUIVO E COMPARA.

void buscar()
{
    FILE *arq_leu;
    char linha[40], ra[5], nome[33];
    char salva_nome[33], salva_ra[5];
    int i, j;
    int achou;
    
    arq_leu = fopen("lista.txt", "r");
    
    if(!arq_leu){
        printf("Impossivel ler arquivo");
        exit(1);
    }
    
    printf("\nDigite o RA que quer buscar: ");
    gets(ra);
    
    //Faz a varredura no arquivo
    while(!feof(arq_leu)){
        
        achou = 0;
        
        fgets(linha, 40, arq_leu);
        for(i = 0; i < strlen(linha)-1; i++){

            if((linha[i] != '|') && (i <= 4)){
                salva_ra[i] = linha[i];
                
                if(strcmp(ra, salva_ra)==0){   //Não entra nesse if
                    achou = 1;
                    j = 0;
                    continue;
                }                    
            }
            
            if(achou == 1){
                salva_nome[j] = linha[i];
            }           
        }      
        
        //Mostra o RA
        if(achou == 1){    
            printf(PULA);
            printf("Ra:%s ", salva_ra);
            printf("Nome:%s ", salva_nome);
        }       
        
        //Limpa a variavel para proxima verificação
        for(i = 0; i < strlen(salva_ra); i++){
            salva_ra[i] = '\0';
        }        
    }
        
    fclose(arq_leu);        
    return;
}

2 Respostas

E

Você, como bom aluno de C, deve saber que você deve terminar uma string com ‘\0’ antes de compará-la com outra string. OK?

Do jeito que você fez, só vai funcionar de vez em quando (ou seja, está errado).

Furyeyes

Verdade.
Havia me esquecido.
Agora funfo…
Valeu!

Criado 20 de fevereiro de 2013
Ultima resposta 20 de fev. de 2013
Respostas 2
Participantes 2