Ir ao conteúdo

como ver se a posiçao no arquivo já não está ocupado


anapr31

Posts recomendados

Postado

tenho que fazer uma agenda usando arquivos mas pra nao sobrescrever dados tenho que ver se a posiçao no arquivo ja nao esta ocupada como faço isso?segue o trecho do meu codigo onde faço cadastro

int criaarq(FILE*arquivo,struct cadastro C)

{

int op,num;

arquivo=fopen("agenda.dat","ab+");

if(arquivo==NULL)

{

printf("erro ao abrir arquivo");

system("pause");

}

else{

do{

fflush(stdin);

printf("\ncodigo: ");

fflush(stdin);

scanf("%d",&C.num);

fflush(stdin);

fseek(arquivo,C.num*sizeof(struct cadastro),SEEK_SET);

fread(&C,sizeof©,1,arquivo);

printf("gravei %d ",C.num);

if(BuscaInsc(C.num,arquivo,C ))

{

printf("ja exite cadastro com este codigo\n\n");

}

else{

fseek(arquivo,C.num*sizeof(struct cadastro),SEEK_SET);

//ver se já não está ocupado

printf("\nnome: ");

gets(C.nome);

fflush(stdin);

printf("\nData de Nascimento(xx/xx/xxxx): ");

gets(C.data);

fflush(stdin);

printf("\nendereco: ");

gets(C.endereco);

fflush(stdin);

printf("\nemail: ");

gets(C.email);

fflush(stdin);

printf("\ntelefone:");

gets(C.tel);

fwrite(&C,sizeof(struct cadastro),1,arquivo);

fseek(arquivo,C.num*sizeof(struct cadastro),SEEK_SET);

printf("CADASTRO EFETUADO COM SUCESSO!!");

}

do{

printf("DESEJA FAZER NOVO CADASTRO 1-SIM 2-NAO");

scanf("%d",&op);

}while(op<1||op>2);

}while(op!=2);

}

fclose(arquivo);

}

Postado

Olá, anapr31.

Para não sobrescrever os dados, mova o indicador de posição para o final do arquivo antes de usar a função fwrite.

Assim:

fseek(arquivo, 0, SEEK_END);

fwrite(&C,sizeof(struct cadastro),1,arquivo);

Desta maneira, você somente adiciona os dados, mas não os sobrescreve.

Você deseja verificar se já existe o dado antes de gravar? Ou pode gravar o mesmo dado duas vezes?

Postado

sim estou fazendo uma funçao especial que verifica se o registro existe BuscaInsc retorna 1 se existe e 0 se nao

era isso mesmo que eu queria saber muito obrigado valeu mesmo!!!

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!