Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/03/2008, 11:54
Avatar de arwen_1
arwen_1
 
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 18 años, 1 mes
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