PDF de programación - Ficheros en C y C++

Imágen de pdf Ficheros en C y C++

Ficheros en C y C++gráfica de visualizaciones

Publicado el 29 de Abril del 2018
899 visualizaciones desde el 29 de Abril del 2018
132,9 KB
46 paginas
Creado hace 20a (19/01/2004)
Manejo de archivos. Capítulo ---

Salvador Pozo Coronado

(C) 2004, C con Clase



http://localhost/conclase/c/ficheros/para-pdf/curso.php [19/01/2004 20:08:03]

Manejo de archivos. Capítulo 001

1 Generalidades:

Muy a menudo necesitamos almacenar cierta cantidad de datos de forma más o menos
permanente. La memoria del ordenador es volatil, y lo que es peor, escasa y cara. De
modo que cuando tenemos que guardar nuestros datos durante cierto tiempo tenemos que
recurrir a sistemas de almacenamiento más económicos, aunque sea a costa de que sean
más lentos.

Durante la historia de los ordenadores se han usado varios métodos distintos para el
almacenamiento de datos. Al principio se recurrió a cintas de papel perforadas, después a
tarjetas perforadas. A continuación se pasó al soporte magnético, empezando por grandes
rollos de cintas magnéticas abiertas.

Hasta aquí, todos los sistemas de almacenamiento externo eran secuenciales, es decir, no
permitían acceder al punto exacto donde se guardaba la información sin antes haber
partido desde el principio y sin haber leído toda la información, hasta el punto donde se
encontraba la que estabamos buscando.

Con las cintas magnéticas empezó lo que con el tiempo sería el acceso aleatorio a los
datos. Se podía reservar parte de la cinta para guardar cierta información sobre la
situación de los datos, y añadir ciertas marcas que hicieran más sencillo localizarla.

Pero no fué hasta la aparición de los discos magnéticos cuando ésta técnica llegó a su
sentido más amplio. En los discos es más sencillo acceder a cualquier punto de la
superficie en poco tiempo, ya que se accede al punto de lectura y escritura usando dos
coordenadas físicas. Por una parte la cabeza de lectura/escritura se puede mover en el
sentido del radio del disco, y por otra el disco gira permanentemente, con lo que
cualquier punto del disco pasa por la cabeza en un tiempo relativamente corto. Esto no
pasa con las cintas, donde sólo hay una coordenada física.

Con la invención y proliferación de los discos se desarrollaron los ficheros de acceso
aleatorio, que permiten acceder a cualquier dato almacenado en un fichero en
relativamente poco tiempo.

Actualmente, los discos duros tienen una enorme capacidad y son muy rápidos, aunque
aún siguen siendo lentos, en comparación con las memorias RAM. El caso de los CD es
algo intermedio. En realidad son secuenciales en cuanto al modo de guardar los datos,
cada disco sólo tiene una pista de datos grabada en espiral. Sin embargo, este sistema,
combinado con algo de memoria RAM, proporciona un acceso muy próximo al de los
discos duros.

En cuanto al tipo de acceso, en C y C++ podemos clasificar los archivos según varias
categorías:

http://localhost/conclase/c/ficheros/para-pdf/curso.php?cap=001 (1 de 3) [19/01/2004 20:08:06]

Manejo de archivos. Capítulo 001

1. Dependiendo de la dirección del flujo de datos:

m De entrada: los datos se leen por el programa desde el archivo.
m De salida: los datos se escriben por el programa hacia el archivo.
m De entrada/salida: los datos pueden se escritos o leídos.

2. Dependiendo del tipo de valores permitidos a cada byte:

m De texto: sólo están permitidos ciertos rangos de valores para cada byte.

Algunos bytes tienen un significado especial, por ejemplo, el valor
hexadecimal 0x1A marca el fin de fichero. Si abrimos un archivo en modo
texto, no será posible leer más allá de un byte con ese valor, aunque el
fichero sea más largo.

m Binarios: están permitidos todos lo valores para cada byte. En estos

archivos el final del fichero se detecta de otro modo, dependiendo del
soporte y del sistema operativo. La mayoría de las veces se hace
guardando la longitud del fichero. Cuando queramos almacenar valores
enteros, o en coma flotante, o imágenes, etc, deberemos usar este tipo de
archivos.

3. Según el tipo de acceso:

m Archivos secuenciales: imitan el modo de acceso de los antiguos ficheros

secuenciales almacenados en cintas magnéticas y

m Archivos de acceso aleatorio: permiten acceder a cualquier punto de ellos

para realizar lecturas y/o escrituras.

4. Según la longitud de registro:

m Longitud variable: en realidad, en este tipo de archivos no tiene sentido
hablar de longitud de registro, podemos considerar cada byte como un
registro. También puede suceder que nuestra aplicación conozca el tipo y
longitud de cada dato almacenado en el archivo, y lea o escriba los bytes
necesarios en cada ocasión. Otro caso es cuando se usa una marca para el
final de registro, por ejemplo, en ficheros de texto se usa el carácter de
retorno de línea para eso. En estos casos cada registro es de longitud
diferente.

m Longitud constante: en estos archivos los datos se almacenan en forma de

registro de tamaño contante. En C usaremos estructuras para definir los
registros. C dispone de funciones de librería adecuadas para manejar este
tipo de ficheros.

m Mixtos: en ocasiones pueden crearse archivos que combinen los dos tipos
de registros, por ejemplo, dBASE usa registros de longitud constante, pero
añade un registro especial de cabecera al principio para definir, entre otras
cosas, el tamaño y el tipo de los registros.

Es posible crear archivos combinando cada una de estas categorías, por ejemplo:
archivos secuenciales de texto de longitud de registro variable, que son los típicos
archivos de texto. Archivos de acceso aleatorio binarios de longitud de registro
constante, normalmente usados en bases de datos. Y también cualquier combinación
menos corriente, como archivos secuenciales binarios de longitud de registro constante,
etc.

http://localhost/conclase/c/ficheros/para-pdf/curso.php?cap=001 (2 de 3) [19/01/2004 20:08:06]

Manejo de archivos. Capítulo 001

En cuanto a cómo se definen estas propiedades, hay dos casos. Si son binarios o de texto
o de entrada, salida o entrada/salida, se define al abrir el fichero, mediante la función
fopen en C o mediante el método open de fstream en C++.

La función open usa dos parámetros. El primero es el nombre del fichero que contiene el
archivo. El segundo es em modo que es una cadena que indica el modo en que se abrirá
el archivo: lectura o escritura, y el tipo de datos que contiene: de texto o binarios.

En C, los ficheros admiten seis modos en cuanto a la dirección del flujo de datos:

l r: sólo lectura. El fichero debe existir.
l w: se abre para escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
l a: añadir, se abre para escritura, el cursor se situa al final del fichero. Si el fichero

no existe, se crea.

l r+: lectura y escritura. El fichero debe existir.
l w+: lectura y escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
l a+: añadir, lectura y escritura, el cursor se situa al final del fichero. Si el fichero

no existe, se crea.

En cuanto a los valores permitidos para los bytes, se puede añadir otro carácter a la
cadena de modo:

l t: modo texto. Normalmente es el modo por defecto. Se suele omitir.
l b: modo binario.

En ciertos sistemas operativos no existe esta distinción, y todos los ficheros son binarios.

En C++ es algo diferente, el constructor de las clases ifstream, ofstream y fstream admite
los parámetros para abrir el fichero directamente, y también disponemos del método
open, para poder crear el stream sin asociarlo con un fichero concreto y hacer esa
asociación más tarde.

http://localhost/conclase/c/ficheros/para-pdf/curso.php?cap=001 (3 de 3) [19/01/2004 20:08:06]

Manejo de archivos. Capítulo 002

2 Tipos, funciones y clases usados
frecuentemente con ficheros

Funciones y tipos C estándar:

Tipo FILE:

C define la estructura de datos FILE en el fichero de cabecesa "stdio.h" para el manejo de ficheros. Nosotros
siempre usaremos punteros a estas estructuras.

La definición de ésta estructura depende del compilador, pero en general mantienen un campo con la posición
actual de lectura/escritura, un buffer para mejorar las prestaciones de acceso al fichero y algunos campos para uso
interno.

Función fopen:

Sintaxis:

FILE *fopen(char *nombre, char *modo);

ésta función sirve para abrir y crear ficheros en disco. El valor de retorno es un puntero a una estructura FILE. Los
parámetros de entrada son:

1. nombre: una cadena que contiene un nombre de fichero válido, esto depende del sistema operativo que

estemos usando. El nombre puede incluir el camino completo.

2. modo: especifica en tipo de fichero que se abrirá o se creará y el tipo de datos que puede contener, de texto

o binarios:

m r: sólo lectura. El fichero debe existir.
m w: se abre para escritura, se crea un fichero nuevo o se sobreescribe si ya existe.
m a: añadir, se abre para escritura, el cursor se situa al final del fichero. Si el fichero no existe, se crea.
m r+: lectura y escritura. El fichero debe existir.
m w+: lectura y escritura, se crea un fichero nuevo o se sobreescribe si ya existe.
m a+: añadir, lectura y escritura, el cursor se situa al final del fichero. Si el fichero no existe, se crea.
m t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t"
m b: tipo binario.

Función fclose:

Sintaxis:

int fclose(FILE *fichero);

Es importante cerrar los ficheros abiertos antes de abandonar la aplicación. Esta función sirve para eso. Cerrar un
fichero almacena los datos que aún están en el buffer de memoria, y actualiza algunos datos de la cabecera del
fichero que mantiene el sistema operativo. Además permite que otros programas puedan abrir el fichero para su
uso. Muy a menudo, los ficheros no pueden ser compartidos por varios programas.

Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido algún error, el valor de
retorno es la constante EOF. El parámetro es un puntero a la estructura FILE del fichero que queremos cerrar
  • Links de descarga
http://lwp-l.com/pdf10712

Comentarios de: Ficheros en C y C++ (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad