Archivos en C++
Archivos en C++
Archivos en C++
Archivos en C++
Operaciones Básicas.
1.- Actualización: Están contenidas tres operaciones en esta categoría:
agregar, eliminar y modificar archivos.
2.- Búsqueda: Una vez creado un archivo, se puede acceder a los datos
contenidos buscando por algún campo genérico.
3.- Pareamiento: Es encontrar una relación o un campo en común entre
los registros de un archivo A en otro archivo B.
4.- Intercalación: Es entrelazar dos archivos en un tercer archivo
respetando los criterios y formatos.
5.- Clasificación: Es ordenar un archivo por algún campo genérico.
Generalmente los cambios se hacen sobre otro archivo de texto.
6.- Concatenación: Es unir dos archivos de texto con igual formato.
Cuando se trabaja con archivos, se hace con flujos de datos que se transfieren
entre el usuario y el archivo y existen dos tipos de flujos correspondientes a
cada tipo de archivo.
(a) Flujo de texto (secuencia de caracteres con formato).
(b) Flujo binario (secuencia de bytes, datos no textuales).
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.
Juan Carlos Gonzalez Ulloa (ayudante programacion estructurada)
web: www.ayudantiaprogramacion.googlepages.com, mail: [email protected]
Programación Estructurada
Ejemplo:
#include <stdio.h>
int main()
{
FILE *fichero;
char nombre[10] = "datos.dat";
if( !fclose(fichero) )
printf( "Fichero cerrado\n" );
else
{
printf( "Error: fichero NO CERRADO\n" );
return 1;
}
return 0;
}
Cerrar Archivos.
Para cerrar archivos se usa el commando fclose, el cual lleva como
parámetro el puntero al archivo. 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.
Ejemplo:
fclose(stream);
Comando EOF
Sirve para indicar o referenciar el fin de un archivo ejemplo:
While(stream!= EOF)
{…
}
Comando fgetc
Esta función lee un carácter desde un fichero.
El valor de retorno es el carácter leído como un unsigned char
convertido a int. Si no hay ningún carácter disponible, el valor de retorno es
EOF. El parámetro es un puntero a una estructura FILE del fichero del que se
hará la lectura.
Ejemplo:
#include <string.h>
#include <stdio.h>
#include <conio.h>
void main()
{
FILE *stream;
char string[] = "Esto es una prueba";
char ch;
do
{
/* lee un caracter del archivo */
ch = fgetc(stream);
/* muestra el caracter */
putch(ch);
} while (ch != EOF);
fclose(stream);
}
Comando fputc
Esta función escribe un carácter a un fichero.
El valor de retorno es el carácter escrito, si la operación fue completada
con éxito, en caso contrario será EOF. Los parámetros de entrada son el
carácter a escribir, convertido a int y un puntero a una estructura FILE del
fichero en el que se hará la escritura.
Ejemplo:
#include <stdio.h>
void main()
{
char msg[] = "Hola mundo";
int i = 0;
while (msg[i])
{
fputc(msg[i], stdout);
i++;
}
Comando feof
Esta función sirve para comprobar si se ha alcanzado el final del fichero.
Muy frecuentemente deberemos trabajar con todos los valores almacenados en
un archivo de forma secuencial, la forma que suelen tener los bucles para leer
todos los datos de un archivo es permanecer leyendo mientras no se detecte el
fin de fichero. Esta función suele usarse como prueba para verificar si se ha
alcanzado o no ese punto.
El valor de retorno es distinto de cero sólo si no se ha alcanzado el fin
de fichero. El parámetro es un puntero a la estructura FILE del fichero que
queremos verificar.
Ejemplo:
#include <stdio.h>
void main()
{
FILE *stream;
/* cerrando el archivo */
fclose(stream);
Comando fprintf
Esta función envía datos al stream apuntado por stream, bajo el control
de la cadena apuntada por formato que especifica cómo los argumentos
posteriores son convertidos para la salida. Si hay argumentos insuficientes
para el formato, el comportamiento no está definido. Si el formato termina
mientras quedan argumentos, los argumentos restantes son evaluados (como
siempre) pero ignorados. La función retorna control cuando el final de la
cadena de formato es encontrado.
Ejemplo:
Comando fsanf
Esta función recibe datos del stream apuntado por stream, bajo el
control de la cadena apuntada por el formato que especifica las secuencias de
entrada permitadas y cómo han de ser convertidas para la asignación. Si hay
void main()
{
int i;
/* lee un entero de
el flujo estandar */
if (fscanf(stdin, "%d", &i))
printf("El entero leido fue: %i\n", i);
else
{
fprintf(stderr, "Error de lectura de entero de stdin.\n");
exit(1);
}
Comando fseek
La función fseek activa el indicador de posición de ficheros para el
stream apuntado por stream. Para un stream binario, la nueva posición, medido
en caracteres del principio del fichero, es obtenida mediante la suma de
desplazamiento y la posición especificada por origen. La posición especificada
es el comienzo del fichero si origen es SEEK_SET, el valor actual del indicador
de posición de fichero si es SEEK_CUR, o final de fichero si es SEEK_END. Un
stream binario realmente no necesita soportar llamadas a fseek con un valor de
origen de SEEK_END. Para un stream de texto, o bien desplazamiento será
cero, o bien desplazamiento será un valor retornado por una llamada anterior a
la función ftell al mismo stream y origen será SEEK_SET. Una llamada
correcta a la función fseek despeja el indicador de final de fichero para el
stream y deshace cualquier efecto producido por la función ungetc en el mismo
stream. Después de una llamada a fseek, la siguiente operación en un stream de
actualización puede ser de entrada o salida.
Ejemplo: fseek( fichero, 0L, SEEK_END );
Comando ftell
La función fseek obtiene el valor actual del indicador de posición de
fichero para el stream apuntado por stream. Para un stream binario, el valor es
el número de caracteres desde el principio del fichero. Para un stream de
texto, su indicador de posición de fichero contiene información no
especificado, servible a la función fseek para retornar el indicador de posición
de fichero para el stream a su posición cuando se llamó a ftell; la diferencia
entre los dos valores de retorno no es necesariamente una medida real del
número de caracteres escritos o leídos.
Ejemplo:
f = ftell( stream );
fseek( stream, f, SEEK_SET );