Salvar tabela hash para iniciar os dados na execução do programa
Olá!
Bom, estou fazendo o projeto final do semestre e tô encontrando alguns problemas no desenvolvimento.
Eu não consigo salvar a tabela hash em um arquivo .txt de maneira correta, para poder iniciar os dados
na execução do programa.
A tabela até salva, porém, retorna 0 em todas as posições.
Código para salvar a tabela ao fechar o arquivo.
FILE *f;
f = fopen("tabela.txt", "a");
int i;
for(i=0; i<MAX; i++)
{
while(Lista[i] != NULL) {
fprintf(f, "%d, %d\n" , Lista[i]->cod, Lista[i]->posicao);
Lista[i] = Lista[i]->prox;
}
}
Código que insere um novo funcionario.
int criar_funcionario (tlista L[]) // PEGANDO CORRETAMENTE
{
FILE *pt;
int posicao;
char opcao;
Funcionario func;
pt = fopen (arq, "ab");
if (pt == NULL)
return 0;
do
{
system("cls");
printf("\t\t _______________________ \n");
printf("\t\t| |\n");
printf("\t\t|CADASTRO DE FUNCIONARIO|\n");
printf("\t\t|_______________________|\n");
printf("\n\n\t\tDigite seu codigo: ");
scanf("%d", &func.cod);
printf("\n\t\tDigite seu nome: ");
scanf("%s", func.nome);
printf("\n\t\tDigite seu salario: ");
scanf("%f", &func.salario);
posicao = ftell(pt)/sizeof(Funcionario); // posição logica
fwrite(&func, sizeof(Funcionario), 1, pt);
fclose(pt);
if ( adicionar_hash(L , func.cod , posicao ) == NULL )
{
system("cls");
printf("\n\t\t _______________________ \n");
printf("\t\t| |\n");
printf("\t\t| CADASTRO EXISTENTE |\n");
printf("\t\t| CODIGO EXISTENTE |\n");
printf("\t\t|_______________________|\n\n\n\n");
//return 0;
}
else
{
system("cls");
printf("\t\t _______________________ \n");
printf("\t\t| |\n");
printf("\t\t| CADASTRO APROVADO |\n");
printf("\t\t|_______________________|\n\n\n\n");
//return 1;
}
printf("\n\n\t\tDeseja fazer outro cadastro?\n");
printf("\t\t[s]im [N]ao\n\n\t\t");
_flushall();
opcao = _getch();
fclose(pt);
}
while (opcao == 's' || opcao == 'S');
}
Código da função hash para adicionar
int adicionar_hash(tlista L[] , int codigo , int posicao)
{
int num = hash(codigo);
if(adicionar_lista( &L[num], codigo , posicao) == 1) // Se não houver erro retorna 1
return 1;
return 0; //caso contrário retornará zero;
}Discussão (1)
Carregando comentários...