Esto te puede ayudar, pueds ver que no es tan complicado y con este ejemplo ya puedes hacer tu programa, este ejemplo lo que hace es leer un fichero y llevarlo a una estructura, nota que esta diseñado para leer el fichero en grupos de 4 digitos, esto es aleaotio ya que depende de como vayas a hacer tu estructura.
Para efectos de escibir una estructura en un archivo, lo debes hacer parte por parte, poque la estructura como tal es un puntero, asi que si lo guardas en disco, guardaras un numero que no te va a servir para recuperar la informacion.
Debes copiar cada uno de los campos de la estructura al disco, cada uno por aparte, asi mismo los debes recuperar uno por uno y luego depositarlos en la estructura.
#include <stdio.h>
#include <io.h>
#define NOEXF 23
#define NOLEN 24
#define BUFFI 4
struct Data
{
struct Data *Pre,*Post;
int info;
};
/*captura datos para un arreglo, desde un archivo
de texto, los convierte en enteros y seguidamente
llena una estructura dinamica.
El archivo debe poseer elformato:
xxxx,xxxx,xxxx,xxxx, para que la funcion lo pueda entener*/
int Lectura(char *FileName,struct Data *Info)
{
FILE *fp=NULL;
char buff[BUFFI];
int fd,multip=0,buffy;
struct Data *aux;
if((fp=fopen(FileName,"r"))!=NULL)
{
fd=fileno(fp);
multip=filelength(fd);
if(multip%(BUFFI+1)==0)
{
Info->Pre=NULL;
Info->info=0;
Info->Post=NULL;
while(multip>0)
{
fread(buff,sizeof(buff),1,fp);
Info->info=strtol(buff,NULL,10);
aux=(struct Data *)malloc(sizeof(struct Data));
Info->Post=aux;
aux->Pre=Info;
aux->Post=NULL;
Info=aux;
fseek(fp,1,SEEK_CUR);
multip-=(BUFFI+1);
}
free(aux);
free(Info);
fflush(fp);
fclose(fp);
close(fd);
}
else
{
return NOLEN;//Archivo de tama¤o inapropiado no es multiplo de BUFFY+1
}
}
else
{
return NOEXF;//Archivo no existe
}
}
Ojala te sirva
juank