Estou desenvolvendo o meu trabalho final da faculdade , porém só um pequeno detalhe está atrapalhando seu funcionamento perfeito.
Eu cadastrei o funcionário e inseri seus dados etc, depois o exclui, ele vai pra lixeira para que possar ver os excluídos e se o usuário quiser recuperar, porém após apertar que quer recuperar o programa simplesmente trava e tenho que fechar.
Segue abaixo a parte da lixeira, na qual está dando o problema e gostaria de uma ajuda.
obs: Notei que ele roda pela primeira vez o while, e na parte em negrito ele não passa mais da segunda vez.(o EOF fica retornando zero,zero,zero infinitamente, dizendo que é o final do arquivo porém nunca conclui e não sai fora da estrutura de repetição também).
--------------------------------------------------------
void lixeira_cadast(){
struct cadastro aux;
int cont=1,op;
system("cls");
printf("- %do Funcionario Excluido - ",cont);
rewind(cadastros);// coloca o ponteiro no inicio do arquivo para pesquisar desde o começo
while(feof(cadastros) != EOF ){// enquanto não chega no fim do arquivo...
fread(&aux, sizeof(struct cadastro), 1, cadastros);
if (aux.ex == 1){
printf("\n\n- %do Funcionario -",cont);
printf("\nNome: %s",aux.nome);
printf("\nSexo: %d",aux.sexo); //
printf("\nIdade: %d",aux.idade); // e mostro os dados
printf("\nValor do salario: %.2f", aux.salario); //
printf("\nComissao vendida: %.2f", aux.comissao); //
cont++;
printf("\n");
printf("Deseja recuperar o cadastro? (1-Sim,2-Nao): ");
scanf("%d",&op);
if (op==1){
aux.ex=0; // altero o campo ex (exclusão logica) para 0
fseek(cadastros, -sizeof(struct cadastro), SEEK_CUR);// ponho o ponteiro no início da ficha
fwrite(&aux, sizeof(struct cadastro), 1, cadastros); //
printf("Cadastro recuperado com sucesso!");
}
else{
getch();
}
}
}
}
Luã Prata
Novo Membro
Registrado
2 Mensagens
0 Curtidas
Linguagem C : Cadastro de Funcionários [criar lixeira]
#1 Por Luã Prata
13/11/2015 - 11:55