Tengo un problema intentando pasar datos de un archivo a una lista.
El archivo tiene el siguiente formato: %s,%d,%s (Nombre,DNI,Apellido).
La cuestion es que al utilizar la función imprimir, solo me imprime el apellido del ultimo nodo de la lista, mientras que los demas valores los imprime bien
Lo raro es que en la función agregar tambíen imprimo para ver que es lo que estoy pasando a los nodos y esta todo bien, asi que no se que puede estar pasando.
Código
#include <stdio.h> #include <stdlib.h> struct s_datos { char*apellido; int dni; char*pais; }; typedef struct s_datos t_dato; struct s_nodo { t_dato dato; struct s_nodo*sig; }; typedef struct s_nodo*t_nodo; void cargalista(t_nodo*); void agregar(t_nodo*,t_dato); void imprimir(t_nodo); int main() { t_nodo lista=NULL; cargalista(&lista); imprimir(lista); return 0; } void cargalista(t_nodo*lista) { FILE*arch=NULL; t_dato datito; int i=0,r; char*aux; while(r!=EOF) { while(r!=',') { *(aux+i)=r; i++; } *(aux+i)='\0'; datito.apellido=aux; char*txt2=NULL; i=0; while(r!='\n' && r!=EOF) { *(txt2+i)=r; i++; } *(txt2+i)='\0'; datito.pais=txt2; i=0; agregar(lista,datito); } } void agregar(t_nodo*nodo,t_dato datito) { if(*nodo==NULL) { (*nodo)->dato=datito; (*nodo)->sig=NULL; } else { agregar(&(*nodo)->sig,datito); } } void imprimir(t_nodo lista) { if(lista!=NULL) { printf("\nApellido: %s - DNI: %d - Pais: %s",lista->dato.apellido,lista->dato.dni,lista->dato.pais); imprimir(lista->sig); } } }