Hola, he creado un procedimiento para crear una lista de registros unida con apuntadores, la lista se escribe y se une correctamente y se puede volver a leer.
El problema es cuando la quiero leer fuera del procedimiento o desde otra funcion, que solo me lee valores nulos o directamente nada...
el procedimiento es el siguiente:
Código:
typedef struct jugador
{
char nombre[20];
char fecha[20];
int puntuacion;
struct jugador *siguiente;
};
void LeerArchivo(jugador *aux, jugador *aux2, jugador *primero, jugador *ultimo)
{
FILE* f;
f = fopen("Puntuaciones.txt", "r");
aux2=(jugador *)malloc(sizeof(jugador));
primero = aux2;
fgets(aux2->nombre, 20, f);
if(!feof(f))
{
printf(aux2->nombre);
fgets(aux2->fecha, 20, f);
printf(aux2->fecha);
fscanf(f, "%d\n", &aux2->puntuacion);
printf("%d\n", aux2->puntuacion);
ultimo = aux2;
}
while(!feof(f))
{
aux=(jugador *)malloc(sizeof(jugador));
aux2->siguiente = aux;
fgets(aux->nombre, 20, f);
printf(aux->nombre);
fgets(aux->fecha, 20, f);
printf(aux->fecha);
fscanf(f, "%d\n", &aux->puntuacion);
printf("%d\n", aux->puntuacion);
aux2 = aux;
ultimo = aux2;
}
aux = primero;
aux2 = primero;
}
Así es como llamo la función:
Código:
void main()
{
jugador *aux;
jugador *aux2;
jugador *primero;
jugador *ultimo;
aux = NULL;
aux2 = NULL;
primer = NULL;
ultim = NULL;
LeerArchivo(aux, aux2, primero, ultimo);
Hasta aquí bien, y aquí viene cuando lo quiero volver a leer:
Código:
printf("Prueba para leer el primer nodo de la lista:\n");
printf("%s", primero->nombre);
printf("%s", primero->fecha);
printf("%d\n", primero->puntuacio);
}
Cuando lo pruebo, el campo aux->nombre da "(null)" y el programa peta en aux->fecha...
Cual es el problema?
Gracias...