Sunteți pe pagina 1din 25

26 y 27 Manejo de archivos en C

Prof. Edgardo Adrin Franco Martnez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com


Estructuras de datos (Prof. Edgardo A. Franco)

Introduccin Tipos de archivos Manejo de archivos en C


Modo texto Modo binario Manejo del desplazamiento sobre el archivo

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Contenido

Contenido

Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de memoria secundaria. Estas colecciones de datos se conocen como archivos.
Un archivo es un conjunto de bits almacenado en un dispositivo de memoria secundaria, el cul puede ser almacenado con un conjunto de propiedades y recuperado de la misma manera por un programa.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Introduccin

Introduccin

Un archivo es identificado por un nombre y la descripcin de la carpeta o directorio que lo contiene. Los archivos digitales se llaman as porque son los equivalentes digitales de los archivos en tarjetas, papel o microfichas del entorno de oficina tradicional.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Introduccin

Introduccin

Hay dos tipos de archivos, archivos de texto y archivos binarios. Un archivo de texto es una secuencia de caracteres organizadas en lneas terminadas por un carcter de nueva lnea.
En estos archivos se pueden almacenar, fuentes de programas, texto plano, base de datos simples, etc. Los archivos de texto se caracterizan por ser planos, es decir, solo contienen caracteres de texto.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Tipos de archivos

Tipos de archivos

Un archivo binario es una secuencia de bytes que tienen una correspondencia uno a uno con un dispositivo externo. As que no tendr lugar ninguna traduccin de caracteres. El nmero de bytes escritos (ledos) ser el mismo que los encontrados en el dispositivo externo.
E.g. de estos archivos son Fotografas, imgenes, texto con formatos, archivos ejecutables (aplicaciones), etc.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Tipos de archivos

Tipos de archivos

En C, un archivo es un concepto lgico que puede aplicarse a muchas cosas desde archivos de disco hasta terminales o una impresora. Para trabajar con un archivo se asocia una estructura especial de tipo FILE con un archivo especifico realizando una operacin de apertura. Una vez que el archivo est abierto, la informacin puede ser intercambiada entre este y el programa.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

Se puede conseguir la entrada y la salida de datos a un archivo a travs del uso de la biblioteca de funciones estndar "stdio.h"; C puro no tiene palabras claves que realicen las operaciones de E/S. La siguiente tabla da un breve resumen de las funciones que se pueden utilizar.
Observe que la mayora de las funciones comienzan con la letra F, esto es un vestigio del estndar C de Unix.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

Nombre
fopen() fclose() fgets() Abre un archivo Cierra un archivo

Funcin

Lee una cadena de un archivo

fputs()
fseek() fprintf() fscanf() feof() ferror() rewind()

Escribe una cadena de un archivo


Busca un byte especifico de un archivo Escribe una salida con formato en el archivo Lee una entrada con un formato en el archivo Devuelve cierto si se llega al final del archivo Devuelve cierto si se produce un error Coloca el cursor de posicin en el archivo al principio del mismo

remove()
fflush()

Borra un archivo
Vaca un archivo

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

El puntero a un archivo. El puntero a un archivo es un tipo especial que opera como hilo comn que unifica el sistema de E/S con buffer. Un puntero a un archivo es un puntero a una informacin que define varias cosas sobre l, incluyendo el nombre, el estado y la posicin actual del archivo. En esencia identifica un archivo especifico y utiliza la secuencia asociada para dirigir el funcionamiento de las funciones de E/S con buffer.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

10

El puntero a un archivo. Un puntero a un archivo es una variable de tipo puntero al tipo FILE que se define en "stdio.h". Un programa necesita utilizar punteros a archivos para leer o escribir en los mismos. Para obtener una variable de este tipo se utiliza una secuencia como esta:
FILE *F;

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

11

Apertura de un archivo La funcin fopen() abre una secuencia para que pueda ser utilizada y la asocia a un archivo. Su prototipo es:
FILE *fopen (const char nombre_archivo, const char modo);

Donde nombre_archivo es un puntero a una cadena de caracteres que representan un nombre valido del archivo y puede incluir una especificacin del directorio. La cadena a la que apunta modo determina como se abre el archivo.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

12

Modos de apertura de un archivo


Modo Significado r w a rb wb ab r+ w+ a+ rb+ wb+ ab+ Abre un archivo de texto para lectura Crea un archivo de texto para escritura Abre un archivo de texto para aadir. Abre un archivo binario para lectura Crea un archivo binario para escritura Abre un archivo para aadir Abre un archivo de texto para lectura / escritura Crea un archivo de texto para lectura / escritura Aade o crea un archivo de texto para lectura / escritura Abre un archivo binario para lectura / escritura Crea un archivo binario para lectura / escritura Aade o crea un archivo binario para lectura / escritura

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

13

Abrir un archivo - fopen() La funcin fopen() devuelve un puntero a archivo. Un programa nunca debe alterar el valor de ese puntero. Si se produce un error cuando se esta intentando abrir un archivo, fopen() devuelve un puntero nulo (NULL). Se puede abrir un archivo bien en modo texto o binario. En la mayora de las implementaciones, en modo texto, la secuencias de retorno de carro / salto de lnea se convierten a caracteres de salto de lnea en lectura.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

14

Abrir un archivo - fopen() En la escritura, ocurre lo contrario: los caracteres de salto de lnea se convierten en salto de lnea. Estas conversiones no ocurren en archivos binarios. La macro NULL est definida en "stdio.h". La funcin fopen() detecta cualquier error al abrir un archivo: como por ejemplo disco lleno o protegido contra escritura antes de comenzar a escribir en l. Si se usa fopen() para abrir un archivo para escritura, entonces cualquier archivo existente con el mismo nombre se borrar y se crea uno nuevo.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

15

Abrir un archivo - fopen() Si se quiere aadir al final del archivo entonces debe usar el modo a. Si se usa a y no existe el archivo, se devolver un error. La apertura de un archivo para las operaciones de lectura requiere que exista el archivo. Si no existe, fopen() devolver un error. "+" abre un archivo para las operaciones de leer / escribir, el sistema operativo no lo borrar si existe; sin embargo, si no existe, el sistema operativo lo crear.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

16

Cierre de un archivo - fclose() La funcin fclose() cierra una secuencia que fue abierta mediante una llamada a fopen(). Escribe toda la informacin que todava se encuentre en el buffer en el disco y realiza un cierre formal del archivo a nivel del sistema operativo.
Un error en el cierre de una secuencia puede generar todo tipo de problemas, incluyendo la prdida de datos, destruccin de archivos y posibles errores intermitentes en el programa.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

17

Cierre de un archivo. int fclose(FILE *F); Donde F es el puntero al archivo devuelto por la llamada a fopen(). Si se devuelve un valor cero significa que la operacin de cierre ha tenido xito. Generalmente, esta funcin solo falla cuando un disco se ha retirado antes de tiempo o cuando no queda espacio libre en el mismo.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C

Manejo de archivos en C

18

Para introducir u obtener datos en modo texto de un archivo tenemos las siguientes cuatro funciones:
fprintf() fscanf() fgets() fputs()

Estas funciones se comportan exactamente como prinft() y scanf(), gets() y puts() excepto que operan sobre archivo. Sus prototipos son:
int fprintf(FILE *F, const char *cadena_de_control, .....); int fscanf(FILE *F, const char *cadena_de_control, .....); char *fputs(char *str, FILE *F); char *fgets(char *str, int long, FILE *F);

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C (Modo texto)

Manejo de archivos en C (Modo texto)

19

El operar con los archivos en modo texto facilita la comprensin de los archivos por cualquier usuario que logre abrir el archivo con otra aplicacin que permita leer el texto claro. Desgraciadamente esta es la forma ms compleja de almacenar registros e informacin as como recuperarla por parte de aplicaciones profesionales, por ello no es recomendable trabajar solo con el modo texto. El modo binario permite un almacenamiento mucho ms seguro, fiable y fcil de manejar (si se disea correctamente la aplicacin).

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C (Modo texto)

Manejo de archivos en C (Modo texto)

20

Para introducir u obtener datos en modo binario de un archivo tenemos las siguientes funciones:
fread() fwrite()

Sus prototipos son:


size_t fread ( void * ptr, size_t size, size_t count, FILE * archivo); size_t fwrite(void *ptr, size_t tamano, size_t count, FILE * archivo);

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C (Modo binario)

Manejo de archivos en C (Modo binario)

21

fread() Esta funcin lee un bloque de una "stream" de datos. Efecta la lectura de un arreglo de elementos "count", cada uno de los cuales tiene un tamao definido por "size". Luego los guarda en el bloque de memoria especificado por "ptr". El indicador de posicin de la cadena de caracteres avanza hasta leer la totalidad de bytes. Si esto es exitoso la cantidad de bytes ledos es (size*count).

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C (Modo binario)

Manejo de archivos en C (Modo binario)

22

size_t fread ( void * ptr, size_t size, size_t count, FILE * archivo);

ptr: Puntero a un bloque de memoria con un tamao mnimo de (size*count) bytes. size: Tamao en bytes de cada elemento (de los que se van a leer). count : Nmero de elementos, los cuales tienen un tamao "size". archivo: Puntero a FILE, que especifica el archivo de entrada.

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C (Modo binario)

Manejo de archivos en C (Modo binario)

23

fwrite() Esta funcin est pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un fichero uno o varios registros de la misma longitud almacenados a partir de una direccin de memoria determinada. El valor de retorno es el nmero de registros escritos, no el nmero de bytes. Los parmetros son: un puntero a la zona de memoria de donde se obtendrn los datos a escribir, el tamao de cada registro, el nmero de registros a escribir y un puntero FILE del fichero al que se har la escritura.
size_t fwrite(void *ptr, size_t tamano, size_t count, FILE * archivo);

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C (Modo binario)

Manejo de archivos en C (Modo binario)

24

(Manejo del desplazamiento sobre el archivo)


fseek() Esta funcin est sita el puntero (cursor) de un archivo en una posicin aleatoria.
int fseek(FILE *archivo, long offset, int origen);

archivo es un puntero a la estructura del archivo offset es un entero largo que especifica el nmero de bytes de origen, donde se colocar el cursor. origen es un nmero entero que especifica la posicin de origen.
Puede ser:
SEEK_SET: El origen es el comienzo del archivo SEEK_CUR: El origen es la posicin actual SEEK_END: El origen es el final del archivo

Algoritmia y programacin estructurada 26 y 27 Manejo de archivos en C Manejo de archivos en C (Manejo del desplazamiento sobre el archivo)

Manejo de archivos en C

25

S-ar putea să vă placă și