Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2009, 12:39
Carlillus
 
Fecha de Ingreso: junio-2007
Ubicación: Sabadell, BCN
Mensajes: 95
Antigüedad: 16 años, 10 meses
Puntos: 1
Pregunta Problema con una lista simplemente encadenada con apuntadores

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...

Última edición por Carlillus; 12/01/2009 a las 12:44