Carregar arquivo do disco para lista encadeada

1. Carregar arquivo do disco para lista encadeada

Ricardo Farias
eternalraziel

(usa Ubuntu)

Enviado em 14/11/2011 - 23:04h

Boa noite, estou dificuldade para carregar um arquivo gravado em disco para uma lista duplamente encadeada.

O código das principais funções está assim:

//CABEÇALHO
typedef struct ListaEnc{
int codigo;
char nomeContato[20];
struct ListaEnc *prox;
struct ListaEnc *ant;
}lista;

//GRAVA AS INFORMACOES DO DISCO
void gravaArquivo(lista *l){
FILE *arquivo;
lista *p;
p = l;

arquivo = fopen("Contatos.txt", "wb");

if (p == NULL){
printf("\nNAO HA CONTATOS A SEREM GRAVADOS EM DISCO."
"\nLISTA VAZIA!");
}
else{
fwrite(&p, sizeof(lista), 1, arquivo);
p = p->prox;
}
fclose(arquivo);
printf("\nDADOS GRAVADOS COM SUCESSO.");
}

//FUNCAO PARA CARREGAR A LISTA
lista* carregaContatos(lista *l){
FILE* arquivo;
lista* p;

arquivo = fopen("Contatos.txt","rb");
rewind(arquivo);

while(!feof(arquivo)){
p = l;
p = (lista*) malloc(sizeof(lista));
if ((fread(p, sizeof(lista), 1, arquivo)) != 1) break;
p = p->prox;
}

fclose(arquivo);
return l;
}

Eu consegui fazer a função para a gravação do arquivo sem nenhum problema, mas a minha dificuldade é para carregar esse arquivo de volta para a memória. O agoritmo compila, mas a função que carrega o arquivo não está funcionando.

Alguém poderia me ajudar ?

Abraço!


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts