UTNianos

Versión completa: Ayuda con Ejercicio de Listas y Archivos
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
HIce un Programa que crea iterativamente una lista con n nodos que se van agregando al comienzo la lista hasta que se cumple el while y despues , con otra funcion, levanta la lista , lo pone en un archivo , dps con otra funcion levanta el archivo y lo imprime en pantalla.

Compilacion: OK . 0 errors y 0 warnings
Ejecucion: Cuando termino de llenar la lista, se me cuelga el programa ahi, ya probe poniendo printfs y como que sale del while pero se queda ahi afuera nose que onda...

Spoiler: Mostrar

#include <stdio.h>
#include <stdlib.h>
typedef struct nodo{ // Lista simplemente enlazada
int dato;
struct nodo *next;
}nodos;
FILE * archivar(nodos *H); // funcion que recibe la lista y la mete en una archivo y devuelve el archivo
void funcion2(FILE *); // la funcion reibe el archivo , hay que leer los datos adentro , meterlos en una lista e imprimirlos

int main()
{
nodos *H=NULL; // EL header de la lista, siempre apunta al primer nodo de la lista
nodos *NODO=NULL;
int n; // cantidad de nodos que voy a ingresar
int i=0;
printf("¿Cuantos nodos desea ingresar?\n");
scanf("%d",&n);
H=NULL;
while(i<n)
{
NODO=(nodos*) malloc(sizeof(nodos));
printf("\nIngrese el valor del nodo:");
scanf("%d",&(NODO->dato));
NODO->next =H;
H=NODO;
i++;
printf(" \n --------\n");
}
funcion2((archivar(H)));
return 0;
}
FILE * archivar(nodos *H)
{
FILE * fp;
nodos *aux1;
aux1= H;
fp= fopen("datos1.db","w+t");
while( aux1 != NULL);
{
fwrite(&(aux1->dato),sizeof(int),1,fp);
aux1=aux1->next;
}
return fp;
}
/*-----------------------------------------------------------------*/
void funcion2(FILE *fp)
{
nodos *H;
H= (nodos*) malloc(sizeof(nodos));
while((fread(&(H->dato),sizeof(int),1,fp))!= 0 )
{
printf("\n El valor del nodo es %d \n",H->dato);
}
printf("\n Fin de la lectura del archivo \n");
}

URLs de referencia