Anterior Home Siguiente

Archivos

En algún momento se vieron rutinas de entrada estandar como scanf(), gets(), getchar(), y de salida como printf(), puts(), o putchar(). Toca ahora ver rutinas de entrada salida estandar que trabajen con archivos.

Una archivo es un conjunto de datos almacenados en la memoria secundaria, normalmente con alguna estructura.

DATOS.TXT
NombreRUTAño
Juan2871775-093<== fila o registro
Pedro12345678-K98
campo

Si el archivo sólo tiene texto ==> un solo campo

Para poder guardar o recuperar información desde o hacia un archivo, lo primero que se debe hacer es declarar un puntero que señale a hacia el.

Nota: todo archivo se acede en forma secuencial, y en un comienzo el puntero apunta a la dirección donde comienza el archivo.

aquí comienza
el archivo
aquí termina
el archivo
Contenido:
Dirección de memoria: 25562557 25582559 25602561 25622563 25642565 25662567

Para declarar un puntero se utiliza la siguiente sentencia:

FILE *nombre_puntero;

El nombre del archivo, no es lo que lo identifica, sino el puntero que apunta a la dirección donde comienza el archivo.

Operaciones elementales con archivos

  1. abrir
  2. cerrar
  3. leer
  4. escribir
  5. rebobinar

1.- Apertura de archivos

Teniendo un puntero previamente declarado, en C para abrir un archivo se utiliza la siguiente sentencia:

fopen(nombre_puntero,"tipo_apertura");

La apertura de un archivo puede ser de básicamente de tres tipos:

Los tipos de apertura básicos y algunas variaciones especifican como sigue:

puntero=fopen("nombre", "r"); /* la r es de read, leer */
Se abre para lectura solamente. Si el archivo no existe, se genera un error.

puntero=fopen("nombre","w"); / *la w es de write, escribir */
Se abre para escritura. Si el archivo no existe, es creado, pero si existe, se destruye para crearlo de nuevo.

fopen("nombre","a"); /* la a es de add, agregar */
Se abre para añadir datos al final. Si el archivo no existe, es creado.

fopen("nombre","r+");
Se abre para lectura y escritura. Si el archivo no existe, se genera un error.

fopen("nombre","w+");
Se abre para lectura y escritura. Si el archivo no existe, es creado, pero si existe, se destruye para crearlo de nuevo.

fopen("nombre","a");
Se abre para leer y añadir datos al final. Si el archivo no existe, es creado.

2.- Cerrar un archivo

Una vez que el archivo se ha dejado de utilizar, es bueno cerrarlo, pues el compilador admite un numero limitado de archivos abiertos. Para cerrar un archivo se utiliza la siguiente sentencia.

fclose(puntero);

En general para detectar si se ha producido un error en la manipulación de un archivo se utiliza la función

ferror(puntero);

esta función devuelve un valor distisnto de cero si se ha cometido algún error, y devuelve un cero en caso contrario.

3.- Lectura desde un archivo

El intercambio de información con la computadora puede hacerse básicamente de dos diferentes:

para leer caracter por caracter desde un archivo se utiliza la función

getc(puntero);

La cual devuelve un entero, y por lo tanto suponiendo que hemos declarado una variable letra como caracter, se puede utilizar de la siguiente manera:

letra=getc(puntero);

La lectura con formato se realiza de la siguiente en forma similar a la que se realiza desde teclado. Para esto utilizamos la función

fscanf(puntero,"formato",variable);

4.- Escritura en un archivo

Para escribir en un archivo se utilizan funciones análogas a las antes vistas:

Escritura caracter por caracter

fputc(variable,puntero);

Escritura con formato

fprintf(puntero,"formato",variable);

Hay otros métodos de leer y escribir desde y hacia un archivo, como por ejemplo por bloques, pero ello requiere de un conocimiento previo de las estructuras.

5.- Rebobinar un Archivo

Rebobinar un archivo significa, llevar el puntero que se esta utilizando para recorrerlo (a medida que se va leyendo un archivo el puntero que inicialmente apuntaba al comienzo del archivo, avanza) al comienzo del archivo desde donde partió. Para ello se utiliza la función

rewind(puntero);

Modificar un archivo

Supongamos que se tiene un archivo con una estructura como la siguiente:

FILA.TXT
NombreRUTAño
Juan2871775-093
Pedro12345678-K98

Si quiero modificar el RUT de Pedro, tendremos se requiere abrir un archivo temporal, por ej. FILA.TMP y seguimos los siguientes pasos:

  1. abrimos FILA.TXT como sólo lectura
  2. Abrimos el archivo TEMP.TXT como sólo escritura
  3. Leemos el archivo FILA.TXT verificamos si se modifica, si es NO, lo escribimos tal cual, si es SI, se modifica y se guarda en FILA.TXT, así tenemos dos archivos: el original y el modificado.
  4. Copiamos FILA.TMP sobre FILA.TXT
  5. Borramos FILA.TMP

Para borrar se pueden usar comandos de DOS, via la función system(comando_DOS), por ejemplo:

system(del DATOS.TMP);

Ejemplos de manejo de archivos


Anterior Home Siguiente



© 2000 Made in Bufoland