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

Ayuda con ficheros

Estas en el tema de Ayuda con ficheros en el foro de C/C++ en Foros del Web. Hola ante todo, mi problema es el siguiente. Tengo que realizar un programa que lea un fichero de texto linea a linea, el problema esta ...
  #1 (permalink)  
Antiguo 05/03/2008, 10:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 3
Antigüedad: 16 años, 2 meses
Puntos: 0
Ayuda con ficheros

Hola ante todo, mi problema es el siguiente.
Tengo que realizar un programa que lea un fichero de texto linea a linea, el problema esta en que tengo que leer de diferentes lineas y extraer información para luego hacer una gráfica con los datos extraidos.
El fichero tendria, por ejemplo, el siguiente formato:

Nombre: Fichero 1
Creado el: 23/10/99
Fecha: 31/4/2008 11:00:06
.....
.....aqui habria mas lineas pero no me interesa nada de ellas
.....
31/4/2008 11:00:07 ; 3,0$
31/4/2008 11:00:08 ; 4,0$
31/4/2008 11:00:09 ; 6,0$
31/4/2008 11:00:10 ; 5,6$
...
...
31/4/2008 11:11:06 ; 2,5$

Y seguiria asi hasta el final del fichero.
Lo que tengo que hacer es leer y luego mostrar es:
-el nombre del fichero
-la fecha
-y por ejemplo los dolares que aparecen al final de cada linea.
  #2 (permalink)  
Antiguo 06/03/2008, 11:54
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Ayuda con ficheros

Hola Javier!

Pq no haces uso de un archivo binario en vez que uno de texto..?

Lo que deseas lo puedes hacer facilmente con uno binario, ya que podrías acceder a cada uno de los campos que nombraste anteriormente independientemente.

Con uno de texto, como te toma cada registro como una linea es dificil (no se si imposible) acceder a cada campo.

Te muestro como seria con un archivo binario:

1. Creas una estructura, que sera la que escribieras en el archivo:

Código:
typedef struct 
{
            char nombre[50];
            date fecha;
            float costo;
} REG;
2. Al leer de la estuctura debes:

Código:
        FILE *ap_b=NULL;
        ap_b=fopen("tuarchivo.dat","rb");
        if (ap_b!=NULL)
        {
                REG tmp;
                int posicion, num_reg, cont;

            ////ubicar el puntero al final del archivo,
                fseek(ap_b,0,SEEK_END);
           //// regresa la posicion en bytes del arhcivo, ya que nos posicionamos al final
                posicion=ftell(ap_b);
          //// calcular el numero de registros que hay en el archivo
                num_reg=posicion/(sizeof(REG));
          //// recorrer el archivo
                for (cont=0;cont<=num_reg;cont++)
                {
                     /////// ubicarnos en el archivo   
                        fseek(ap_b,cont*sizeof(REG),SEEK_SET);
                     /////// leer un registro
                        fread(&tmp,sizeof(REG),1,ap_b);

                    //////puedes manipular la estructura, por ejemplo, sumar todos los costos o tambien imprmir la informacoin que deseas 
                    acum += tmp.costo;
                } // fin del for
    } //fin del if
Bueno, a groso modo es asi como podrias maniular cada campo, claro tendrias tambien que hacer el de escribir en el archivo y eso.

Te recomiendo que uses entonces un archivo binario, claro espero que usar archivo de texto no sea un requermimiento obligatorio
  #3 (permalink)  
Antiguo 07/03/2008, 09:34
 
Fecha de Ingreso: marzo-2008
Mensajes: 3
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Ayuda con ficheros

Hola ,gracias por responder, pero es obligatorio leer desde un archivo de texto que ya continene los datos, yo solo los tengo que recoger para luego operar con ellos.
  #4 (permalink)  
Antiguo 07/03/2008, 10:46
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 16 años, 5 meses
Puntos: 24
Re: Ayuda con ficheros

Éste es el tipico problema que se resuelve muy facilmente con PERL.
__________________
Grupos de Música
Pop Music Stars
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 04:32.