Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Filho

Salvar tabela hash para iniciar os dados na execução do programa

Recommended Posts

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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza vamos lah..

ele n ta salvando no txt, + se você mandar exibir na tela, ele faz beleza?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.