Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con una lista simplemente encadenada con apuntadores

Estas en el tema de Problema con una lista simplemente encadenada con apuntadores en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/01/2009, 12:39
 
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
  #2 (permalink)  
Antiguo 12/01/2009, 20:08
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: Problema con una lista simplemente encadenada con apuntadores

Hace un rato, tuve un problema muy muy parecido. Y pues investigando descubri que los apuntadores tambien se pueden pasar por valor o por referencia.

Lo que arreglaria tu problema seria usar dobles punteros en tu lsita de argumentos de la funcion. Y pasarle la direccion de tus punneros.(corrijanme si me equivoco)

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:42.