registros es c++

Iniciado por bash, 15 Mayo 2010, 00:37 AM

0 Miembros y 1 Visitante están viendo este tema.

bash

buenas a todos otra ves ahora vengo con otra dudita.


Código (cpp) [Seleccionar]


//supongamos que solo quiero leer un registro de varios en un archivo .bin
//con una estructura.

#include <fstream>

int main()
{
   long lon;
    struct bin_reg{
      int c;
      char r;     
}obj, otro;
     fstream reg("security.bin" ios::binary  | ios::in  | ios::app );
    //se que tengo que tener la longitud del archivo
  lon = reg.tellg();
   //bla....
   //se que tengo que tener la longitud del archivo
   //pero no se como desplasamer  hasta una posicion x donde quiero un valor .

  reg.read((char*)(obj), sizeof(bin_reg));
  reg.read((char*)(otro), sizeof(otro));
   cout << obj.c << endl <<endl ;
   ...reg.close();



en realidad estoy bastante perdido en esto pero tratare de expresarme
tengo que crear un src que cree un archivo en modo binario luego introduzca varios datos de una estructura claro usando registro luego checkear la estructura con otras variables del tipo de dentro de la estructura luego leer y actualizar . por favor ayudenme no pido tanto src si no algun empujonsito para saber como hacer esto yo mismo.

gracias
gracias por responder mis dudas

bash

perdon por el doble post

kla verdad tengo que disculparme por ser tonto y postearde esta forma pero en realidad lo nesecito mucho tal ves esta ves con el codigo mas "elaborado"

tengo esta struct
Código (cpp) [Seleccionar]

//estrucutura que controla los datos
struct Banco{
    string cuenta;
    short int pin;
    int balance;

};


esta funcion crea el archivo para su actualizacion.
Código (cpp) [Seleccionar]


bool crearcuentas()
{
    char resp;
    fstream Archivo1;
    Banco obj;

    Archivo1.open("Cuentas.bin", ios::binary | ios::out);
    if(Archivo1){
    cout<<"Bienvenido programador de cajero "<<endl;
    do{
    cout<<"vamos a iniciar un registro."<<endl<<"Digite su cuenta seguida de el signo de #"<<endl<<"";
    getline(cin , obj.cuenta, '#');
    cin.ignore();
    cout<<"digite el pin de esa cuenta"<<endl;
    cin >> obj.pin;
    cin.ignore();
    cout<<"digite el balnce de esa cuenta."<<endl;
    cin >> obj.balance;
    cin.ignore();


    Archivo1.write((char*)(&obj), sizeof(Banco));
    cout<<"procesar otra cuenta cuenta s o S para continuar."<<endl;
    cin >> resp;
    }while(resp == 's' || resp == 'S');
    Archivo1.close();
    return true;
    }else cout<<"Error : abriendo el archivo."; return false;

    return true;

}




quiero hacer algo asi

Código (cpp) [Seleccionar]

//// funcion para actualizar el balance del registro
//codigo de alex cruz

void update (cuentas cliente,int pin , int nocuent ,int balance, int retiro,int pos){

cout<<pos<<endl;
fstream  compare("cuentas.bin", ios::out| ios::binary);
compare.seekp( ((pos) * sizeof(cuentas)), ios::beg);
cliente.balance=balance-retiro;
compare.write((char*)(&cliente), sizeof(cuentas));
compare.close();

}


entoces el problema es que cuando trato de actualizar las cuentas no pasa NADA es como si no hiciera nada.

espero que alguien me pueda ayudar por favor
Código (cpp) [Seleccionar]

GRACIAS y DISCULPEN las molestias.
[/b]
gracias por responder mis dudas