Archivos Binarios
Archivos Binarios
Archivos Binarios
ARCHIVOS BINARIOS
Para abrir un archivo binario es usa el
manipulador binary en la funcin open.
Ejemplos:
ofstream file;
fstream arch;
file.open(costos.dat,ios:binary);
//Abre el archivo para salida en modo binario
arch.open(leyes.dat,ios::out | ios::in | ios::binary);
//Abre el archivo para entrada o salida en modo binario
ALGORITMOS Y ESTRUCTURA DE DATOS
OPERADOR REINTERPRET_CAST
C++ proporciona este operador para realizar
conversiones mediante cast no standard o
conversin cast standard.
La sintaxis es la siguiente:
reinterpret_cast <char *>
La misma es utilizada con las instrucciones read y
write.
LECTURA
Sentencia read
<Nombre Objeto>.read((reinterpret_cast <char *> )&variable,num);
ESCRITURA
Sentencia wrie
<Nombre Objeto>.write((reinterpret_cast <char *> )&variable,num);
EJEMPLOS DE APLICACIN
//Programa para manejo de archivos Binarios
#include <fstream.h>
#include <iostream>
#define T reinterpret_cast <char *>
using namespace std;
const int Max=15;
int main()
{ int i,k; char mFile[Max]="Prueba.dat";
CONTINUACION...
else
{ cout<<"El archivo se abrio con exito para escritura\n";
for(i=1;i<=17;i++)
F1.write(T(&i),sizeof(int));
F1.close();
}
F2.open("Prueba.dat",ios::binary); F2.read(T(&k),sizeof(int));
while(!F2.eof())
{ cout<<k<<" ";
F2.read(T(&k),sizeof(int));
}
cout<<endl;
F2.close();
}
ALGORITMOS Y ESTRUCTURA DE DATOS
APLICACIN DE NOTAS
//Programa que almacena los datos de N alumnos y luego lo muestra
#include <fstream.h>
#include <iostream>
#include <stdio.h>
#include <string.h>
#define T reinterpret_cast <char *>
using namespace std;
const int M=15,N=25;
int main()
{ char mFile[M]="NotaBina.dat"; float n1,n2,n3,prom;
char cod[8],ApePat[N],ApeMat[N],Nom[N],obs[11];
ifstream F2; // Crea el objeto Archi para Lectura
ofstream F1; // Crea el objeto Archi para Escritura
F1.open(mFile,ios::binary); // Abre un archivo
CONTINUACION
if(F1.fail())
{ cout<<"El Archivo no se puede abrir con exito\n"
<<"Verifique si el archivo existe"<<endl;
exit(1);
}
cout<<"El archivo se abrio con exito para Escritura\n";
cout<<"Codigo o Enter para finalizar..... ";gets(cod);
for(;strlen(cod)!=0;)
{ cout<<"Apellido Paterno:";gets(ApePat);
cout<<"Apellido Materno:";gets(ApeMat);
cout<<"Nombres
:";gets(Nom);
cout<<"Nota 1
:";cin>>n1;
cout<<"Nota 2
:";cin>>n2;
cout<<"Nota 3
:";cin>>n3;
ALGORITMOS Y ESTRUCTURA DE DATOS
CONTINUACION...
prom=(n1+n2+n3)/3;
if(prom>10.5)
strcpy(obs,"Aprobado");
else
strcpy(obs,"Desaprobado");
F1.write(T(&cod),sizeof(cod));
F1.write(T(&ApePat),sizeof(ApePat));
F1.write(T(&ApeMat),sizeof(ApeMat));
F1.write(T(&Nom),sizeof(Nom));F1.write(T(&n1),sizeof(n1));
F1.write(T(&n2),sizeof(n2));F1.write(T(&n3),sizeof(n3));
F1.write(T(&prom),sizeof(prom));F1.write(T(&obs),sizeof(obs));
cout<<"Codigo o Enter para finalizar..... ";gets(cod);
}
10
CONTINUACION...
//Cerrando el archivo
F1.close();
F2.open(mFile,ios::in|ios::binary);
cout<<"Codigo\tApellidos
Nombres\tEvaluaciones\tPromedio\tObserv.\n";
F2.read(T(&cod),sizeof(cod));
while(!F2.eof())
{ F2.read(T(&ApePat),sizeof(ApePat));
F2.read(T(&ApeMat),sizeof(ApeMat));
F2.read(T(&Nom),sizeof(Nom));F2.read(T(&n1),sizeof(n1));
F2.read(T(&n2),sizeof(n2));F2.read(T(&n3),sizeof(n3));
F2.read(T(&prom),sizeof(prom));F2.read(T(&obs),sizeof(obs));
11
CONTINUACION...
cout<<cod<<"\t"<<ApePat<<"\t"<<ApeMat<<"\t"<<Nom<<"\t"<<n
1<<"\t"
<<n2<<"\t"<<n3<<"\t"<<prom<<"\t"<<obs<<endl;
F2.read(T(&cod),sizeof(cod));
}
//Cerrando el archivo
F2.close();
}
12