buenas a todos otra ves ahora vengo con otra dudita.
//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
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
//estrucutura que controla los datos
struct Banco{
string cuenta;
short int pin;
int balance;
};
esta funcion crea el archivo para su actualizacion.
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
//// 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
GRACIAS y DISCULPEN las molestias.
[/b]