elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Leer un archivo de texto y meter el contenido en una lista
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer un archivo de texto y meter el contenido en una lista  (Leído 2,577 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Leer un archivo de texto y meter el contenido en una lista
« en: 21 Junio 2020, 17:15 pm »

Buenos Dias

Tengo el siguiente problema.
Quiero leer un archivo de texto con el siguiente contenido:

Lopez,95128428,Chile
Lee,148284,China
Wondrio,95182,Brasil
Goku,591281,Japon

El primer contenido es el apellido, luego el DNI y por ultimo el pais.

Luego esto tengo que meterlo en una estructura y luego pasar cada uno de los datos de esa estructura a una lista.
Pude solucionar la mayoria de los problemas que tenia dividiendo la carga del archivo en funciones mas chicas y con eso se me hizo un poco más legible y el resultado es el esperado, pero el problema es que no se como hacer para hacer un ciclo while que me lea todas las lineas, ya que no puedo modificar el archivo y de la forma que hice la captura de datos, no encuentro forma

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct s_datos
  5. {
  6.    char*apellido;
  7.    int dni;
  8.    char*pais;
  9. };
  10. typedef struct s_datos t_dato;
  11.  
  12. struct s_nodo
  13. {
  14.    t_dato dato;
  15.    struct s_nodo*sig;
  16. };
  17. typedef struct s_nodo*t_nodo;
  18.  
  19. char* sacoapellido(FILE*arch);
  20. int sacodocumento(FILE*arch);
  21. char*sacopais(FILE*arch);
  22. void agregar(t_nodo*,t_dato);
  23. void imprimir(t_nodo);
  24.  
  25. int main()
  26. {
  27.    t_nodo lista=NULL;
  28.    t_dato aux;
  29.    char*txt=NULL;
  30.    char*txt2=NULL;
  31.    int r,i=0,doc;
  32.  
  33.    FILE*arch=NULL;
  34.    arch=fopen("personas.txt","r");
  35.    txt=sacoapellido(arch);
  36.    doc=sacodocumento(arch);
  37.    txt2=sacopais(arch);
  38.  
  39.    aux.apellido=txt;
  40.    aux.dni=doc;
  41.    aux.pais=txt2;
  42.  
  43.    agregar(&lista,aux);
  44.    txt=sacoapellido(arch);
  45.    doc=sacodocumento(arch);
  46.    txt2=sacopais(arch);
  47.    aux.apellido=txt;
  48.    aux.dni=doc;
  49.    aux.pais=txt2;
  50.    agregar(&lista,aux);
  51.   // printf("\nLos datos son: Apellido : %s - DNI: %d  - Pais: %s",aux.apellido,aux.dni,aux.pais);
  52.    imprimir(lista);
  53.  
  54.  
  55. }
  56. char*sacoapellido(FILE*arch)
  57. {
  58.    int i=0,r;
  59.    char*aux=NULL;
  60.    aux=malloc(sizeof(char));
  61.    r=fgetc(arch);
  62.    while(r!=',')
  63.    {
  64.        *(aux+i)=r;
  65.        i++;
  66.        aux=realloc(aux,(i+1)*sizeof(char));
  67.        r=fgetc(arch);
  68.    }
  69.    *(aux+i)='\0';
  70.    return aux;
  71. }
  72. int sacodocumento(FILE*arch)
  73. {
  74.    int documento;
  75.    fscanf(arch,"%d,",&documento);
  76.    return documento;
  77.  
  78. }
  79. char*sacopais(FILE*arch)
  80. {
  81.    int i=0,r;
  82.    char*aux=NULL;
  83.    aux=malloc(sizeof(char));
  84.    r=fgetc(arch);
  85.    while(r!='\n' && r!=EOF)
  86.    {
  87.        *(aux+i)=r;
  88.        i++;
  89.        aux=realloc(aux,(i+1)*sizeof(char));
  90.        r=fgetc(arch);
  91.    }
  92.    *(aux+i)='\0';
  93.    return aux;
  94. }
  95. void agregar(t_nodo*nodo,t_dato dato)
  96. {
  97.    if(*nodo==NULL)
  98.    {
  99.        *nodo=(t_nodo)malloc(sizeof(struct s_nodo));
  100.        (*nodo)->dato=dato;
  101.        (*nodo)->sig=NULL;
  102.    }
  103.    else
  104.    {
  105.        agregar(&(*nodo)->sig,dato);
  106.    }
  107. }
  108. void imprimir(t_nodo lista)
  109. {
  110.    while(lista!=NULL)
  111.    {
  112.        printf("Apellido: %s - DNI: %d - Pais: %s\n",lista->dato.apellido,lista->dato.dni,lista->dato.pais);
  113.        lista=lista->sig;
  114.    }
  115. }


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
leer un archivo de texto
PHP
Zeroql 3 2,650 Último mensaje 24 Agosto 2007, 05:48 am
por дٳŦ٭
leer el contenido de un archivo hasta un caracter concreto
Programación Visual Basic
ELGRANSOLRAC 3 2,042 Último mensaje 2 Marzo 2008, 13:14 pm
por ~~
Modificar el contenido de una linea de un archivo de texto en c# « 1 2 »
.NET (C#, VB.NET, ASP)
nico56 15 38,591 Último mensaje 12 Noviembre 2013, 07:21 am
por Eleкtro
ayudenme a leer el contenido de un archivo
Ingeniería Inversa
ciberastro 0 1,709 Último mensaje 5 Octubre 2013, 16:12 pm
por ciberastro
Leer archivo de texto « 1 2 »
Programación C/C++
niraikanai 10 5,606 Último mensaje 2 Abril 2015, 07:42 am
por boy-ka
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines