acceso directo en archivos
Hola
Necesito ayuda con un programa de registros de longitud fija, nose como hacer los accesos directos para hacer las modificaciones aqui les pongo la parte del codigo de modificar en objetos le hice algunas modificaciones pero no funciona:
Código:
void boleto::modificar(){
int band=0,pos=0;
long int num,n;
char resp;
ifstream b("a:\\arcobj.txt");
ofstream a("a:\\arcobj.txt",ios::app);
if(!b.good())
cout<<"\n No existe el archivo";
else{
printf("\n Numero a modificar: ");
cin>>num;
n=num;
while(!b.eof()){
b.read((char*)&x,sizeof(x));
if(b.eof())
break;
if(num==numero){
cout<<"\n\n Nombre: ";
cout<<nombre;
cout<<"\n lugar: ";
cout<<lugar;
cout<<"\n precio: ";
cout<<precio;
cout<<"\n Numero: ";
cout<<numero;
band=1;
n=num;
num=n;
fflush(stdin);
printf("\n\n Desea modificarlo (s/n): ");
scanf("%s",&resp);
if(resp==\'s\'|| resp==\'S\'){
b.seekg(0,ios::beg);
while(!b.eof()){
b.read((char*)&x,sizeof(x));
if(b.eof())
break;
if(num==numero){
a.seekp(pos,ios::beg);
cout<<"\n lugar: ";
fflush(stdin);
gets(lugar);
cout<<"\n precio: ";
cin>>precio;
fflush(stdin);
cout<<"\n Nombre: ";
gets(nombre);
a.write((char*)&x,sizeof(x));
break;
}//fin if(modificando)
else
pos=pos+68;
}//fin while leyendo archivo para copiarlo
break;
}//fin if (comparando respuesta para eliminar)
else
break;
}//fin if (comparando registro con numero)
}//fin while (leer archivo)
if(band==0)
printf("\n\n No se encuentra registro");
}//fin else(se pudo abrir archivo)
a.close();
b.close();
getch();
}
Ojala puedan ayudarme es muy urgente
Necesito ayuda con un programa de registros de longitud fija, nose como hacer los accesos directos para hacer las modificaciones aqui les pongo la parte del codigo de modificar en objetos le hice algunas modificaciones pero no funciona:
Código:
void boleto::modificar(){
int band=0,pos=0;
long int num,n;
char resp;
ifstream b("a:\\arcobj.txt");
ofstream a("a:\\arcobj.txt",ios::app);
if(!b.good())
cout<<"\n No existe el archivo";
else{
printf("\n Numero a modificar: ");
cin>>num;
n=num;
while(!b.eof()){
b.read((char*)&x,sizeof(x));
if(b.eof())
break;
if(num==numero){
cout<<"\n\n Nombre: ";
cout<<nombre;
cout<<"\n lugar: ";
cout<<lugar;
cout<<"\n precio: ";
cout<<precio;
cout<<"\n Numero: ";
cout<<numero;
band=1;
n=num;
num=n;
fflush(stdin);
printf("\n\n Desea modificarlo (s/n): ");
scanf("%s",&resp);
if(resp==\'s\'|| resp==\'S\'){
b.seekg(0,ios::beg);
while(!b.eof()){
b.read((char*)&x,sizeof(x));
if(b.eof())
break;
if(num==numero){
a.seekp(pos,ios::beg);
cout<<"\n lugar: ";
fflush(stdin);
gets(lugar);
cout<<"\n precio: ";
cin>>precio;
fflush(stdin);
cout<<"\n Nombre: ";
gets(nombre);
a.write((char*)&x,sizeof(x));
break;
}//fin if(modificando)
else
pos=pos+68;
}//fin while leyendo archivo para copiarlo
break;
}//fin if (comparando respuesta para eliminar)
else
break;
}//fin if (comparando registro con numero)
}//fin while (leer archivo)
if(band==0)
printf("\n\n No se encuentra registro");
}//fin else(se pudo abrir archivo)
a.close();
b.close();
getch();
}
Ojala puedan ayudarme es muy urgente
