Archivos en C El Almacenamiento de datos en estructuras de datos vistas anteriormente solo se generan temporalmente, es decir, cuando termina el programa los datos se pierden. Para ello, una forma de no perderlos y recuperarlos aun cuando el programa termine es con el manejo de Archivos. C ve cada uno de los archivos simplemente como un grupo secuencial de bytes. Cada archivo termina con un marcador de fin de archivo o un nmero de bytes especificado registrado en una estructura de datos. Las funciones para manipular los Archivos son:
Funcin Descripcin fopen!" Abre un flujo fc#ose!" Cierra un flujo pu$c Escribe un carcter en un flujo %e$c!" ee un carcter desde un flujo fpu$s!" Escribe una cadena en un flujo f%e$s!" !btiene una cadena de un flujo fsee&!" "alta al byte especificado en un flujo fprin$f!" #mprime datos con formato en un flujo fscanf!" ee datos con formato en un flujo eof!" $evuelve verdadero o falso si se halla el fin del archivo. Los f#u'os dan canales de comunicaci%n entre el archivo y el programa. Por ejemplo, el flujo de entrada estndar permite &ue un programa lea datos desde el teclado, el flujo de salida estndar permite &ue un programa imprima datos en la pantalla. 'n flujo se relaciona con un archivo utili(ando una operaci%n de apertura y se desliga del archivo con una operaci%n de cierre. E(is$en ) $ipos *e f#u'os: )e*to y binarios. El flujo de Texto se utili(a con conversiones de Caracteres. Es decir, puede no haber correspondencia entre lo &ue se env+a al flujo y lo &ue se escribe en el archivo. El flujo Binario tiene una correspondencia directa entre lo &ue se env+a y se escribe en el archivo. 'n archivo es el grupo de informaci%n &ue est en una entidad f+sica real &ue recibe los datos, ya sea $$ o dis,ette. A+rir un Archivo puede ser para varios prop%sitos: lectura, escritura o ambos, por lo &ue se utili(a la siguiente funci%n para ello: -#E fopen.char /f,char /modo01 &ue es lo mismo &ue Pgina 2 de 3 fopen !No,+re *e# Archivo- Mo*o". os modos de Abrir al archivo se especifican en la siguiente tabla: Acceso Descripcin/ 0r0 Abre un archivo para lectura. El archivo debe de e*istir 010 Abre para escritura. "i el archivo no e*iste se crea, pero si e*iste se borra su informaci%n para crearla de nuevo. 0a0 Abre para escribir al final de el. "i el archivo no e*iste se crea. 0r20 Abre para Escritura4ectura. El archivo debe e*istir. 0120 Abre para Escritura4ectura. "i el archivo no e*iste se crea, pero si e*iste su informaci%n se destruye para crearla de nuevo. 0a20 Abre para escribir al final de el y leer. "i el archivo no e*iste se crea. 0r+0 Abre un archivo binario para lectura. El archivo debe e*istir. 01+0 Abre un archivo binario para escritura. "i el archivo no e*iste se crea, pero si e*iste su informaci%n se destruye para crearla de nuevo. 0a+0 "e abre un archivo binario para escribir al final de el. "i el archivo no e*iste se crea. 0r+20 Abre un archivo binario para lectura4Escritura. El archivo debe e*istir 01+20 Abre un archivo binario para lectura4escritura. "i el archivo no e*iste se crea, pero si e*iste su informaci%n se destruye para crearla de nuevo. 0a+20 Abre un archivo binario para lectura y a5adir. "i el archivo no e*iste se crea. Cerrar un Archivo despu6s de trabajar es algo &ue debe de hacerse, si no se hace este se cierra automticamente cuando finali(a el programa. "e cierra de la siguiente manera: fc#ose!FILE 3f" Ejemplo de programa &ue Escribe y lee carcter por carcter de un archivo las instrucciones usadas son putc y getc. !bserve el manejo de fopen y fclose en los siguientes ejemplos. #nt putc.int c, -#E/f01 Escribe el carcter c en un archivo apuntado por f #nt getc.-#E /f01 $evuelve el carcter le+do e incrementa la posici%n actual del indicador del archivo, si se detecta el fin del archivo se devuelve E!-. Pgina 7 de 3 -#E /apuntador establece &ue 8apuntador8 es un apuntador a la estructura -#E. a forma de Escribir y leer la informaci%n por medio de strings es por medio de las instrucciones fgets y fputs. int fputs.char /cad, -#E /f01Escribe una cadena de caracteres a un archivo apuntado por f. int fgets.char /cad, int n, -#E /f01 ee una cadena de Caracteres. Pgina 9 de 3 Las ins$rucciones frea* 4 f1ri$e se utili(an en archivos en el &ue se utili(an estructuras para definir la longitud de cada registro. f1ri$e!voi* 3+uffer-si5e6$ nu,6+4$es-si5e6$ n- FILE 3f". Escribe n registros de longitud num:bytes desde la memoria apuntada por buffer al archivo f. frea*!voi* 3+uffer-si5e6$ nu,6+4$es-si5e6$ n- FILE 3f". ee n registros de num:bytes en la memoria apuntada hacia buffer desde el archivo f. Pgina 3 de 3