Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: RRjavier21 en 6 Agosto 2018, 19:37 pm



Título: Duda leer archivo de texto
Publicado por: RRjavier21 en 6 Agosto 2018, 19:37 pm
Hola buenas, tengo un problema con un programa, necesito leer hasta el final un archivo de texto, pero necesito hacerlo con fscanf para guardar los datos que me dan.

El archivo son 3 tipos de casos junto a 3 datos.Estan de esta forma, sin orden de casos ni tampoco una cantidad limite de casos (cada caso tiene su propio nombre).

caso2 dato1 dato2 dato3
caso3 dato1 dato2 dato3
caso2 dato1 dato2 dato3
caso1 dato 1 dato2 dato3

Se que tengo que utilizar el EOF para saber que llegue al final del archivo, pero no se como utilizarlo con fscanf, y estoy totalmente desorientado. Agradeceria la ayuda.
(estoy programando en C si es que es de utilidad)


Título: Re: Duda leer archivo de texto
Publicado por: ThunderCls en 6 Agosto 2018, 19:56 pm
fscanf + C# ? Algo no me cuadra  :¬¬ ......seguro que estas usando C#?


Título: Re: Duda leer archivo de texto
Publicado por: RRjavier21 en 6 Agosto 2018, 20:40 pm
no se en que estaba pensando
era C, no me funciono el cerebro

bueno, la pregunta es la misma
solo que es C en vez de C#


Título: Re: Duda leer archivo de texto
Publicado por: MAFUS en 7 Agosto 2018, 00:37 am
Lo que suelo usar es la siguiente estructura:

Código
  1. char c;
  2. FILE *fp;
  3.  
  4. // ...
  5.  
  6. c=fgetc(fp);
  7. while(!feof) {
  8.    ungetc(c, fp);
  9.  
  10.    // Hacer lo que uno quiera con el archivo
  11.  
  12.    c=fgetc(fp);
  13. }
  14.  


Título: Re: Duda leer archivo de texto
Publicado por: ThunderCls en 7 Agosto 2018, 00:52 am
Dependiendo del tipo de dato que esperas leer en cada caso igual pudieras usar algo como lo que te dio MAFUS usando ademas fscanf:

Código
  1. char caso[MAX_PATH];
  2. char dato1[MAX_PATH];
  3. char dato2[MAX_PATH];
  4. char dato3[MAX_PATH];
  5.  
  6. ...
  7.  
  8. while(fscanf(fp,"%s %s %s %s", caso, dato1, dato2, dato3) != EOF)
  9. {
  10.    // haz lo que quieras con caso, dato1, dato2, dato3
  11. }
  12.  
  13. ...
  14.  
  15.