
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!