Ir ao conteúdo
  • Cadastre-se
Dudaq13

Pesquisa em arquivos binario [C]

Recommended Posts

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;

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×