/* 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 <

    Source: geocities.com/ar/rafaelmartinez_v/introduccion

               ( geocities.com/ar/rafaelmartinez_v)                   ( geocities.com/ar)