Академический Документы
Профессиональный Документы
Культура Документы
INGENIERÍA MECATRÓNICA
FUNDAMENTOS DE PROGRAMACIÓN
NRC - 4091
Nombres:
Contenido
Marco teórico
1. INTRODUCCIÓN
Existen rutinas para abrir y cerrar archivos, y para leer y escribir en ellos utilizando datos formateados,
de manera similar a como se hace el formato de datos para entrada y salida en pantalla.
2. FLUJOS Y ARCHIVOS
2.1. Flujos
El manejo de archivos en un lenguaje como C emplea el uso deflujos (también llamados stream).Se
denominan flujos pues emplean una corriente de datos entre un origen y un destino. Entre el origen y el
destino existe una conexión llamada pipe es precisamente por este canal donde circulan los datos utiliza
un buffer para el acceso A los archivos. Este buffer está diseñado para acceder a una amplia gama de
dispositivos, de tal forma que trata cada dispositivo como una secuencia. Con las secuencias escomo se
simplifica el manejo de archivos en C.
2.2. Archivos
Un archivo es un conjunto de datos estructurados en una colección de entidades elementales o básicas
denominadas registros que son de igual tipo y constan a su vez de diferentes entidades de nivel más
bajos denominadas campos. Hay dos tipos de archivos, archivos de texto y archivos binarios.
Un archivo de texto es una secuencia de caracteres organizadas en líneas terminadas por un carácter de
nueva línea. En estos archivos se pueden almacenar canciones, fuentes de programas, base de datos
simples, etc. Los archivos de texto se caracterizan por ser planos, es decir, todas las letras tienen el
mismo formato y no hay palabras subrayadas, en negrita, o letras de distinto tamaño o ancho.
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 traducción de caracteres. Además, el número de
bytes escritos (leídos) será el mismo que los encontrados en el dispositivo externo. Ejemplos de estos
archivos son Fotografías, imágenes, texto con formatos, archivos ejecutables (aplicaciones), etc. En c,
un archivo es un concepto lógico que puede aplicarse a muchas cosas desde archivos de disco hasta
terminales o una impresora. Se asocia una secuencia con un archivo especifico realizando una operación
de apertura. Una vez que el archivo está abierto, la información puede ser intercambiada entre este y el
programa.
4
3. PUNTERO A ARCHIVO
El puntero a un archivo es el hilo común que unifica el sistema de E/S con buffer. Un puntero a un
archivo es un puntero a una información que define varias cosas sobre él, incluyendo el nombre, el
estado y la posición 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. 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;
La función fopen() abre una secuencia para que pueda ser utilizada y la asocia a un archivo. Su prototipo
es:
Donde nombre_archivo es un puntero a una cadena de caracteres que representan un nombre valido del
archivo y puede incluir una especificación del directorio. La cadena a la que apunta modo determina
como se abre el archivo. La siguiente tabla muestra los valores permitidos para modo.
La macro NULL está definida en STDIO.H. Este método detecto 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. Si no existe un archivo
con el mismo nombre, entonces se creará. Si se quiere añadir 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. Finalmente, sus se abre un archivo para las
operaciones de leer / escribir, la computadora no lo borrará si existe; sin embargo, si no
existe, la computadora lo creará.
La función fclose() cierra una secuencia que fue abierta mediante una llamada a fopen(). Escribe toda la
información que todavía 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 pérdida de datos, destrucción de archivos y posibles errores intermitentes en el programa.
Donde F es el puntero al archivo devuelto por la llamada a fopen(). Si se devuelve un valor cero significa
que la operación de cierre ha tenido éxito. Generalmente, esta función solo falla cuando un disco se ha
retirado antes de tiempo o cuando no queda espacio libre en el mismo.
6
Si nos referimos a la escritura de archivos, si debemos escribir carácter por carácter, podemos utilizar las
funciones
putc()
fputc().
Ambas funciones no presentan diferencias pues retornan el carácter que fue escrito o EOF en caso de
no poder cumplir el objetivo.
putc(c, puntero_archivo);
fputc(c,puntero_archivo);
La función getc() lee un caracterde un archivo abierto en modo lectura mediante la función
fopen().
La función getc() toma el caracter leído del archivo, o toma una marca EOF cuando se haya
alcanzado el final del archivo.
Entonces, la lectura de un archivo de texto puede realizarse hasta que se encuentre la marca de
fin de archivo, con las siguientes sentencias:
putchar (car);
NOTAS:
- El estándar ANSI define dos funciones equivalentes que leen un caracter de un archivo: getc()
y fgetc(). Estas dos funciones idénticas solo existen para preservar la compatibilidad con
versiones antiguas de C. Por lo tanto, ambas funciones pueden utilizarse indistintamente.
- Debido a razones históricas getc() devuelve un entero, pero el byte más significativo es cero.
Las funciones fopen(), getc(), putc() y felose() constituyen el conjunto mínimo de rutinas de
tratamiento de archivos.
La función feof() determina cuando se ha alcanzado el fin del archivo, al leer un archivo de
datos binario.
La función feof() devuelve verdadero si se ha alcanzado el final del archivo, en otro caso
devuelve 0.
Por ejemplo, para leer todo el archivo binario apuntado por pt, es decir, para leer el archivo
hasta que se encuentre el final del mismo y mostrar su contenido en la pantalla, se haría así:
Se puede aplicar este método tanto a archivos binarios como a archivos de texto, hasta que se
encuentre el caracter EOF, que está definido en el archivo de cabecera "stdio.h" con el valor -
1. Esto sirve para trasladar bloques de datos sin importar el modo de almacenamiento.
8
Cuando se abre un archivo para datos binarios, se puede leer un valor entero igual al de la marca
EOF. Esto podría hacer que en la lectura indique una condición de fin de archivo, aún cuando
el fin físico del mismo no se haya alcanzado.
La función rewind() posiciona el "indicador de posición del archivo" al principio del mismo.
Es decir, "rebobina" el archivo.
Se usa la función rewind para colocar el apuntador del archivo al principio de un archivo abierto.
Las funciones fputs() y fgets() escriben y leen cadenas de caracteres sobre archivos.
donde:
- La función fputs() funciona como puts() pero escribe la cadena apuntada por cad en el flujo
especificado por pt. Si se produce un error devuelve EOF.
9
- La función fgets() lee una cadena apuntada por cad del flujo especificado por pt, hasta que se
lee un caracter salto de línea o hasta que se hayan leído longitud-1 caracteres.
Si se lee un caracter de salto de línea, éste forma parte de la cadena leída (a diferencia de gets()).
La cadena resultante se termina en un carácter nulo.
donde:
La función remove() devuelve cero si tiene éxito, y un valor distinto de cero si falla.
donde:
Por ejemplo, para vaciar el flujo de la entrada estándar (teclado) se utiliza la siguiente sentencia:
fflush (stdin);
Si se llama a fflush() con un puntero NULL se vacían los buffers de todos los archivos abiertos.
donde:
Se debe tener en cuenta que en cada operación sobre un archivo se actualiza la condición de
error, por esto se debe llamar a ferror() inmediatamente después de cada operación de este tipo,
si no se hace así el error no podrá ser detectado.
Estas operaciones funcionan con las mismas reglas que otra expresión en C
Estas operaciones funcionan con las mismas reglas que otra expresión en C
Estas operaciones funcionan con las mismas reglas que otra expresión en C
Programas en C
13
Conclusiones y Recomendaciones
Conclusiones
Aunque existe una gran diversidad de aplicaciones que se pueden desarrollar con manejo de archivos
que pueden ser sumamente completas y complejas, estos apuntes presentan, de una forma sencilla
y comprensible, los aspectos básicos de programación de archivos usando lenguaje C. De tal forma,
que no presenta lógica abrumadora de control de detalles, sino la base fundamental del material es
entender y utilizar las funciones básicas de manejo de archivos en este lenguaje para posteriormente
usarlas en cursos superiores o vida laboral.
Recomendaciones
En los programas que se escriban se debe intentar evitar declaraciones complejas que dificulten la
legibilidad del programa. Una forma de conseguirlo es utilizando typedef para redefinir/renombrar
tipos.
14
Referencias
Kernighan, B. W., Ritchie, D. M., Gómez Muñoz, N., & Frid, D. (1991). El Lenguaje de programación C.
https://www.academia.edu/7334210/Manejo_de_Archivos_en_C