ficheris

Páginas: 2 (330 palabras) Publicado: 20 de mayo de 2013

Acceso aleatorio a un fichero
En el ejemplo de copia de un fichero binario vimos como abrir un fichero para lectura y escritura. También vimos como leer de él o escribir.
En ese ejemplo, tantola lectura como la escritura eran secuenciales. Es decir, se abría el fichero desde el principio del fichero y se iban leyendo o escribiendo todos los datos del fichero en orden, desde el primero hastael último, secuencialmente.
En la mayoría de los casos esto nos puede servir. Leemos el contenido completo del fichero y trabajamos con él. O abrimos el fichero para escribir los resultados y losvamos escribiendo todos seguidos.
Sin embargo, hay casos en que esto se nos puede quedar escaso. Hay veces en que necesitamos acceder una y otra vez al fichero para leer sus datos, modificar parte deellos, por el medio. Imagina, por ejemplo, que tenemos guardado en un fichero nuestra agenda de teléfonos, con nuestros amigos. A veces podemos querer consultar uno que esté en medio del fichero, ocambiar su número de teléfono, o borrarlo como amigo porque nos hemos peleado.
C nos ofrece esta posibilidad. La función fseek() nos permite desplazarnos rápidamente, sin necesidad de ir leyendo todo,hasta una posición concreta de un fichero. Esto es lo que se conoce como acceso aleatorio a un fichero.
Definimos una estructura y rellenamos el fichero
Siguiendo con el ejemplo de la agenda, supónque tenemos una estructura de datos en C para guardar nuestros amigos. Sólo pondremos dos campos, el nombre y el teléfono.
typedefstruct {
   char nombre[20];
   int edad;
} persona;
Con estaestructura vamos a hacer un pequeño relleno de un fichero, para tener algo con lo que jugar. El código puede ser este
FILE *f1;
persona dato;
int i;

/* Abrimos el fichero binario y de escritura */f1 = fopen ("persona.dat", "wb");
if (f1 == NULL)
{
   perror("No se puede abrir persona.dat");
   return -1;
}

/* Escribimos 10 datos, que serán
* Juan0, Juan1, Juan2, Juan3...
* con edad...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS