[C con Clase] Espero te sirva Retroceder el puntero en archivo binario
Luis Saavedra Linares
saavedraphp en gmail.com
Lun Jun 9 15:53:54 CEST 2008
Hola carolina.
lo que yo hago es primero buscar el registro y un a vez encontrado guardo la
posición ahí el código.
bool Buscar_Persona(int pcodigo, int *posicion, bool *HuboError )
{
FILE *aPersona;
rP rPersona;
bool encontro = false;
*HuboError = false;
aPersona = fopen(cNombreArchivoPersona, "rb");
if(aPersona == NULL)
{
*HuboError = true;
}
else
{
fread(&rPersona, sizeof(rPersona), 1, aPersona);
while( (!feof(aPersona)) && (!encontro) )
{
if( (rPersona.id_persona == pcodigo) &&
(rPersona.eliminado == false) )
{
encontro = true;
}
else
{
fread(&rPersona, sizeof(rPersona), 1,
aPersona);
*posicion = *posicion + 1;
}
}
fclose(aPersona);
}
return encontro;
}
------------
luego hago el cambios modificados envío la posición y modifico los datos
así,
bool ModificarPersona(int pid_persona,char* pnombre, char* p_apaterno, char*
p_amaterno,
char* pdireccion_foto, bool *HuboError, int
*pPosicion )
{
FILE *aPersona;
rP rPersona;
bool Modifico = false;
aPersona = fopen(cNombreArchivoPersona, "rb+");
if(aPersona == NULL)
{
*HuboError = true;
}
else
{
fread(&rPersona, sizeof(rPersona), 1, aPersona);
fseek(aPersona, sizeof(rPersona) * (*pPosicion),
SEEK_SET);
rPersona.id_persona = pid_persona;
strcpy(rPersona.nombre, pnombre);
strcpy(rPersona.ap_pat, p_apaterno);
strcpy(rPersona.ap_mat, p_amaterno);
strcpy(rPersona.direccion_foto, pdireccion_foto);
Modifico = true;
fwrite(&rPersona, sizeof(rPersona), 1, aPersona);
fclose(aPersona);
}
return Modifico;
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080609/bc398ba3/attachment.html>
Más información sobre la lista de distribución Cconclase