Ir ao conteúdo
  • Cadastre-se

Pesquisa em arquivos binario [C]


Dudaq13

Posts recomendados

Ola! Estou com um problema no meu programa.

Tenho uma função para alterar, mas para alterar eu uso a função de busca.

E toda vez que digito o CPF para alterar, a função de busca diz que o resgistro não está cadastrado. tentei varios metodos de busca e não consegui achar o erro.

void alterar(FILE *arq, char cpf[]){

int x,status;

char resp;

tcadastro aux;

x = busca(arq,cpf);

if(x == -1){

printf("Cliente nao cadastrado\n");

}

else{

fseek (arq, x * sizeof(tcadastro), SEEK_SET);

status = fread (&aux, sizeof(tcadastro),1, arq);

if(status == 1){

do{

printf("Deseja mudar o nome?[s-sim/n-nao]: ");

resp = getchar();fflush(stdin);

resp = tolower(resp);

if(resp == 's'){

printf("Digite o nome: ");

gets(aux.nome);fflush(stdin);

}

}while(resp != 'n');

do{

printf("Deseja mudar a identidade?[s-sim/n-nao]: ");

resp = getchar();fflush(stdin);

resp = tolower(resp);

if(resp == 's'){

printf("Digite a identidade: ");

gets(aux.identidade);fflush(stdin);

}

}while(resp != 'n');

do{

printf("Deseja mudar o endereco?[s-sim/n-nao]: ");

resp = getchar();fflush(stdin);

resp = tolower(resp);

if(resp == 's'){

printf("Digite o endereco: ");

gets(aux.ende);fflush(stdin);

}

}while(resp != 'n');

do{

printf("Deseja mudar o telefone?[s-sim/n-nao]: ");

resp = getchar();fflush(stdin);

resp = tolower(resp);

if(resp == 's'){

printf("Digite o telefone: ");

gets(aux.telefone);fflush(stdin);

}

}while(resp != 'n');

do{

printf("Deseja mudar o email?[s-sim/n-nao]: ");

resp = getchar();fflush(stdin);

resp = tolower(resp);

if(resp == 's'){

printf("Digite o email: ");

gets(aux.email);fflush(stdin);

}

}while(resp != 'n');

fseek (arq, x * sizeof(tcadastro), SEEK_SET); // ou fseek (arquivo, -sizeof(TAluno), SEEK_CUR);

status = fwrite (&aux, sizeof(tcadastro),1, arq);

if (status == 1)

printf ("Alteracao efetuada \n");

else

printf ("Erro de gravacao \n");

}//if status

else

printf("Erro na leitura!\n");

}//else

}//void

int busca(FILE *arq,char cpf[]){

int cont=0;

tcadastro aux;

rewind(arq);

do{

fread(&aux,sizeof(tcadastro),1,arq);

if(strcmp(aux.cpf,cpf) == 0&& aux.status ==1)

{

return cont; }

cont++;

} while(feof(arq)==0 &&strcmp(aux.cpf,cpf) != 0);

if(strcmp(aux.cpf,cpf) != 0)

{

return -1;

}

}

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...