/* Este codigo es basico para manejar archivos binarios en disco,
tiene el proposito de mostrar como ingresar datos en un arreglo
y guardarlos en el disco (C:/ProgramacionC++/prueba.dat), ademas de
visualizar los datos y de buscar uno en particular.
Tiene el derecho de modificarlo y compartirlo con otras personas
Universidad de Costa Rica
Sede Guanacaste
IF-1300 Introduccion a la Computacion e Informatica
18/06/2008.
Prof. Rafael Martinez */
#include
#include
#define CANTIDAD 5
using namespace std;
struct datos
{
char nombre[30];
char telefono[15];
};
struct datos personas[CANTIDAD]; //variable gloval
// Funciones prototipos
void agregar( struct datos personas[CANTIDAD]);
void ver( struct datos registro);
void buscararregistro( struct datos registro);
char menu(void);
int main ()
{
char opcion;
struct datos registro;
system("CLS");
for(;;)
{
fflush(stdin);
switch (opcion=menu())
{
case '1': agregar (personas);
break;
system("PAUSE");
case '2': ver (registro);
break;
case '3': buscararregistro(registro);
break;
case '4': cout<> personas[i].nombre;
cout<< "Telefono: ";
cin>> personas[i].telefono;
fsalida.write(reinterpret_cast(&personas[i]), sizeof(datos)); // escribimos el registro en el archivo.
}// fin del for
fsalida.close();// cerramos el archivo (se baja el bufer y se guarda en el disco.
}
//Permite visualizar el archivo recorriendolo registro por registro
void ver( struct datos registro)
{
int con = 0;
char resp;
system("CLS");
ifstream fentrada("C:/ProgramacionC++/prueba.dat", ios::in | ios::binary);
while(fentrada.peek()!=EOF) //pregunta si no es fin del archivo(End Of File)
{
cout << "Registro N: " << con+1 << endl;
fentrada.seekg(sizeof(registro)*con,ios::beg); //colocamos el apuntador en la posicion inicial del registro.
fentrada.read(reinterpret_cast(®istro),sizeof(datos));
cout << "Nombre: ";
cout << registro.nombre << endl;
cout << "Telefono: ";
cout <> buscar;
ifstream fentrada("C:/ProgramacionC++/prueba.dat", ios::in | ios::binary);// abre el archivo para leerlo
while(fentrada.peek()!=EOF)// pregunta si no es fin del archivo
{
fentrada.seekg(sizeof(registro)*con,ios::beg); //colocamos el apuntador en la posicion inicial del registro encontrado
fentrada.read(reinterpret_cast(®istro),sizeof(datos));
if (strcmp (registro.nombre, buscar)==0)
{
cout << "Registro N: " << con+1 << endl;
cout << "Nombre: ";
cout << registro.nombre << endl;
cout << "Telefono: ";
cout <               ( geocities.com/ar/rafaelmartinez_v)                   ( geocities.com/ar)