Encontre UNA solucion mesclando algunas tecnicas
Te mando este ejemplo donde NomLista es un campo dentrO de un struct
Llamado varlista. EL ARCHIVO SE LLAMA LISTA.APL y tiene el mismo formato
del struct
Suerte
int nreg=0; // nro de registro por el que se avanza
int desplaza; // desplazamiento dentro del archivo medido en bytes
char cadetemp[30]; // cadena auxiliar
Listas VarLista; // Crear una variable de tipo Listas
fstream archivo; // creo un objeto de tipo archivo
// abrir el archivo para lectura y escritura
archivo.open("./Lista.alp",ios::in|ios::out); // para entrada y salida
if (archivo.is_open()) //verificar que se abrio
{
// ------ leer el primer registro ------
nreg =1; //nro del primer reg
desplaza = sizeof(VarLista)*(nreg-1); //calcular desplazamiento el menos uno es porque el primer registro comienza en la posicion cero
archivo.seekg(desplaza,ios::beg); //posicionarse para leer
// leer registro
archivo.read(reinterpret_cast<char *> (&VarLista), sizeof(VarLista));
// --------recorrer los registros modificando ---------------
while (!archivo.eof()&&!archivo.fail())
{
//---- armar el texto a modificar ------
strcpy(cadetemp,"Registro Numero "); // texto fijo en este ejemplo
// Modificar el contenido del campo asignandole el texto armado
strcpy(VarLista.NomLista,cadetemp);
archivo.seekp(desplaza,ios::beg); //posicionarse para escribir
// grabar el registro modificado
archivo.write(reinterpret_cast<const char *> (&VarLista), sizeof(VarLista));
// leer el proximo registro
nreg ++; //avanzar el nro de reg
desplaza = sizeof(VarLista)*(nreg-1); //calcular desplazamiento
archivo.seekg(desplaza,ios::beg); //posicionarse
archivo.read(reinterpret_cast<char *> (&VarLista), sizeof(VarLista));
}
// cerrar el archivo
archivo.close();
}