Buen aporte no lo probe porque ando estudiando del detel y me hice las mismas funciones para practicar para el final.
solo un detalle por si alguien llega aca. yo tambien tuve el mismo problema y es que cuando guardas la lista en un archivo tambien estas guardano la direccion del puntero siguiente que no es necesario ya que cuando cargas el archivo o lo envias por sockets esta puede cambiar.
eso lo solucione declarando de esta manera la estructura.
/* estructura autorreferenciada */
typedef struct Nodo
{ int valor;
char nombre[50]; /* define dato como un char */
}nodo;
struct nodoCola {
nodo dato;
struct nodoCola *ptrSiguiente; /* apuntador nodoCola */
} ; /* fin de la estructura nodoCola */
typedef struct nodoCola NodoCola;
typedef NodoCola *ptrNodoCola;
Declaras una structura datos y esa dentro de una structura que contiene el puntero siguiente.
despues a la hora de guardar solo guardas la structura datos y no la nodoCola.
void guardarLista(ptrNodoCola *ptrCabeza)
{
FILE *fp;
ptrNodoCola recorre;
recorre=*ptrCabeza;
nodo datos; /*Aca no use malloc porqque no creo que la pc se quede sin memoria para una sola structura*/
fp=fopen("Datos.bin","wb+");
while(recorre!=NULL)
{
fwrite(&(recorre->dato),sizeof(datos),1,fp);
recorre=recorre->ptrSiguiente;
}
fclose(fp);
}
para cargar la lista aun estoy trabajando en ello porque me mareo con los punteros, pero vi tu idea de retornar un puntero( para usar el puntero ya creado en el main) y creo que pruebo esa.
La mayor parte lo saque del detel que lo recomiendo. creeme que me lei varios libros y es el unico que te tira codigo directo para compilar sin errores y cada linea explicada.
pd: saben cuales son las librerias de sockets de la catedra que se usa en el final? porque yo la curse hace 3 años no vi sockets y me estuve practicando con codigos de internet que puedo conectarmee pero son un monton de lineas de codigos del cliente /servidor para aprenderse xd.