You are on page 1of 4

Facultad de Informática, Electrónica y Comunicación

INF200 e INF212 – Estructura de Datos


Manejo de archivos de datos

Archivos en C

Los archivos permiten almacenar información en forma permanente, para ser


accedida, actualizada o modificada cuando sea necesario. En el lenguaje de
programación C se identifican archivos secuenciales, archivos de bajo nivel y archivos
sin formatos.

El lenguaje C no contiene instrucciones de entrada y/o salida. Estas actividades


se realizan con funciones de librerías estándares como; printf(), scanf(), putchar(),
getchar(), puts(), gets().

Existe un conjunto extenso de funciones de biblioteca para crear y procesar


archivos en C.

Usted puede encontrar información complementaria en:


http://www.dinkumware.com/htm_cl/lib_file.html
http://www.modelo.edu.mx/univ/virtech/prograc/clecesc.htm
http://www.mrx.net/c/

Conceptos de Entradas y salidas

Hay dos conceptos muy importantes en el Lenguaje de Programación C,


relacionados con la entrada y salida (E/S), estos son:

• flujos (streams)
• archivos o ficheros

FLUJOS

Los flujos son secuencias de caracteres o bytes que nos permiten realizar las
operaciones de entradas y salidas. Todos los flujos tienen un comportamiento similar y
son independientes del dispositivo; disco, terminal, impresora, etc., al cual se asocia.
Esta característica facilita la labor del programador ya que solo tiene que pensar en
términos de flujo sin importar el dispositivo físico que se use. El C provee el un buffer
para obviar al usuario los detalles físicos de los dispositivos. Existen dos tipos de flujos,
el de texto y el binario.

FLUJO DE TEXTO

Un flujo de texto es un flujo de caracteres en el cual, algunos caracteres pueden


ser convertidos antes de ser pasados al dispositivo físico. Por ejemplo, un carácter de
nueva línea '\n' puede aparecer como CR y LF. Es por ello que no necesariamente existe
una relación biunívoca entre los caracteres que se escriben o se leen y los que hay en un
dispositivo externo.

Diego Santimateo http://www.esnips.com/web/edatos 1


Facultad de Informática, Electrónica y Comunicación
INF200 e INF212 – Estructura de Datos
Manejo de archivos de datos

FLUJO BINARIO

Un flujo binario es una secuencia de bytes que se almacenan en los dispositivos


externos sin sufrir ninguna conversión y permiten almacenar datos en forma compacta.

Con la ejecución de un programa se abren los siguientes flujos de texto


predefinidos:

FLUJO DISPOSITIVO
stdin teclado
stdout pantalla
stderr pantalla
stdaux primer puerto serial
stdprn impresora

ARCHIVOS

En el Lenguaje de Programación C, un archivo o fichero es una estructura de


datos que se puede asociar a cualquier dispositivo externo, al cual se le ha asignado un
flujo.

Existen tres actividades sustanciales cuando trabajamos con archivos, ellas son:

 La apertura del archivo


 El uso del archivo o proceso del archivo
 El cierre del archivo

EL BUFFER

Para trabajar con archivos en C debemos establecer un buffer o área de trabajo.


El buffer es un área de memoria donde los datos o información se almacenan
temporalmente mientras se transfieren, entre la memoria de la computadora y el archivo
correspondiente. El buffer se establece con la instrucción:

FILE *ptr

FILE es un tipo especial de estructura definida en la librería stdio.h y ptr es la


variable puntero que indica el principio del buffer. En el uso cotidiano ptr se identifica
como el apuntador al archivo o simplemente como el archivo.

APERTURA

Un archivo debe abrirse antes de crearlo, leerlo o modificarlo. Para abrir un


archivo se usa la función de biblioteca fopen, que devuelve un apuntador al buffer del
archivo. Examinemos la siguiente asignación:

Diego Santimateo http://www.esnips.com/web/edatos 2


Facultad de Informática, Electrónica y Comunicación
INF200 e INF212 – Estructura de Datos
Manejo de archivos de datos

ptr = fopen(nombre-archivo, modo-de-apertura)

nombre-de-archivo se refiere al nombre físico del archivo(como lo ve en su


directorio del disco) que cumple con la regla para asignar nombres en el sistema
operativo que se esté usando y modo-de-apertura a la manera en la que el archivo
será utilizado, considerando los siguientes:

modo-de-apertura significado
"r" solo de lectura
"w" crea archivo para grabar, destruye el existente
"a" añadir nuevos datos o crear archivo
"r+" lectura y grabación en archivo existente
"w+" crea archivo para lectura/escritura, destruye el existente
"a+" lee y adiciona datos o crea archivo

El apuntador ptr será NULL si no se puede abrir el archivo.

EJEMPLO

#include <stdio.h>

FILE *ptr;

ptr = fopen("datos.dat", "w");

Usted puede encontrar otros ejemplos


en:http://webdia.cem.itesm.mx/ac/rogomez/Tutorial-LengC/archivos.html

Uso del archivo

El programador debe tomar en cuenta el modo de apertura de su archivo antes de


usarlo, por ejemplo, no debe intentar grabar datos en un archivo que no ha creado o
recordar que los modos de apertura "w" y "w+" pueden destruir el archivo si su nombre
físico coincide con alguno existente. Las funciones fscanf() y fprintf() para leer y grabar
en archivos son similares al scanf y printf que ya conocemos.¿En qué difieren?

Si se desea leer el contenido de un archivo para luego desplegarlo o para procesarlo


use: getc(ptr) o fscanf (ptr, "%s", variable)

fscanf (ptr, “formato de conversión”, lista de direcciones de memoria de las variables);


Si se desea grabar valores en el archivo entonces, use: putc(variable, ptr) o
fprintf(ptr, "%s", variable)

fprintf (ptr, “formato de conversión”, lista de nombres de las variables);

Diego Santimateo http://www.esnips.com/web/edatos 3


Facultad de Informática, Electrónica y Comunicación
INF200 e INF212 – Estructura de Datos
Manejo de archivos de datos

Cierre del archivo


fclose (ptr)
Con esta función terminamos el uso del archivo y logramos que el buffer
transfiera todo lo que tiene al medio de almacenamiento externo (disco).

Fin del archivo


Para detectar el final de un archivo secuencial o de texto se usa la función feof
que devuelve un valor distinto de cero(verdadero) si se detecta la condición de fin del
archivo, en caso contrario devuelve cero. En consecuencia se puede usar un while para
leer un archivo como se muestra a continuación:

while (!feof(ptr))
{
// lectura del archivo
// procesamiento de los datos
}
fclose(ptr)

Diego Santimateo http://www.esnips.com/web/edatos 4