Vou colocar a parte que mencionei acima (inserção): void insereregistro(){
char fim,grava,*valida;
double aux_cod=0;
double aux_cod2=0;
double stt = 0;
double n=0;
// le e insere mais elementos no arquivo
aluno.proxExc = 0;
do{
limpatela(6,23);
gotoxy(5,5);
printf("********* Insere Registros *********");
gotoxy(5,6);
printf("Codigo do aluno:");
gotoxy(5,7);
printf("Nome do Aluno:");
gotoxy(5,8);
printf("Curso:");
gotoxy(5,9);
printf("Data Nascimento:");
gotoxy(5,10);
printf("Logradouro:");
gotoxy(5,11);
printf("Cidade:");
gotoxy(5,12);
printf("Telefone:");
gotoxy(5,13);
printf("Nome Pai:");
gotoxy(5,14);
printf("Nome Mae:");
gotoxy(5,15);
printf("Carne:");
//le cabecalho
fseek(arq_dados, SEEK_SET, 0);
fread(&cabecalho,sizeof(cabecalho),1,arq_dados);
aluno.codigo = cabecalho.codigo;
gotoxy(22,6);
printf("%1.0lf",aluno.codigo);
cabecalho.primeiroExcluido=2;
if (cabecalho.primeiroExcluido!=0){
aux_cod = aluno.codigo;
fseek(arq_dados,sizeof(aluno), SEEK_END);
n=(ftell(arq_dados)/sizeof(aluno)-(cabecalho.primeiroExcluido+1));
fseek(arq_dados,n*sizeof(aluno), SEEK_CUR);
fread(&aluno, sizeof(aluno),1,arq_dados);
if (aluno.proxExc!=0){
stt = 1;
aluno.codigo = aux_cod;
aux_cod2 = cabecalho.primeiroExcluido;
cabecalho.primeiroExcluido = aluno.proxExc;
cabecalho.codigo = aluno.codigo;
fseek(arq_dados, SEEK_SET, 0);
fwrite(&cabecalho, sizeof(cabecalho),1, arq_dados);
}else{
aluno.codigo = aux_cod;
}
}
//gets(aluno.codigo);
gotoxy(20,7);
gets(aluno.nome);
gotoxy(12,8);
gets(aluno.curso);
gotoxy(22,9);
gets(aluno.dtnasc);
gotoxy(17,10);
gets(aluno.logradouro);
gotoxy(13,11);
gets(aluno.cidade);
gotoxy(15,12);
gets(aluno.telefone);
gotoxy(15,13);
gets(aluno.nomepai);
gotoxy(15,14);
gets(aluno.nomemae);
gotoxy(15,15);
printf("<S - sim N - não>");
do{
gotoxy(12,15);
*valida=toupper(getche());
if (*valida=='S' || *valida=='N')
strcpy(aluno.carne,valida);
}while(*valida!='S' && *valida!='N');
do{
do{
gotoxy(5,17);
printf("Confirma gravacao dos dados <S - sim N - não>");
grava = toupper(getch());
if(grava== 'S'){
cabecalho.codigo++;
fseek(arq_dados, SEEK_SET, 0);
fwrite(&cabecalho, sizeof(cabecalho),1, arq_dados);
if (stt!=0){
//insere por cima do reg excluido
aluno.proxExc=0;
fseek(arq_dados, SEEK_SET,aux_cod2);
fwrite(&aluno, sizeof(aluno),1,arq_dados);
}else{
aluno.proxExc = 0;
fseek(arq_dados,0,SEEK_END);
fwrite(&aluno, sizeof(aluno),1, arq_dados);
}
//fwrite("\r\n", sizeof("\n"),1, arq_dados);
//fseek(arq_dados, SEEK_SET, 0);
//// insere cabecalho
//fwrite(&cabecalho, sizeof(cabecalho),1, arq_dados);
}else{
if (aluno.proxExc!=0){
cabecalho.primeiroExcluido = aux_cod2;
fseek(arq_dados, SEEK_SET, 0);
fwrite(&cabecalho, sizeof(cabecalho),1, arq_dados);
}
}
stt=0;
}while(grava!='S' && grava!='N');
limpatela(17,17);
gotoxy(5,17);
printf("Deseja continuar <S - sim N - não>");
fim = toupper(getch());
}while(fim!='S' && fim!='N');
}while (fim!='N');
}