Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/05/2013, 09:49
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 5 meses
Puntos: 83
Respuesta: Editar usuarios :.

"...Lo intente con a+ y el resultado continua no muy favorable..."

Te modifica el siguiente registro? Por 1000 te digo porque :))

Cuando estas buscando el registro objetivo el puntero de lectura siempre queda al final de la lectura:

Código:
...
fread (&registro, sizeof(struct sRegistro), 1, clientzz);
while (!feof(clientzz))
{
if (newregistro.newcodigo == registro.codigo)
...
Es decir que si la estructura del cliento ocupa 100 bytes, cada fread cargas 100bytes, y el puntero de lectura y escritura (en a+) avanza 100 bytes. Es decir que cuando has encontrado el cliente a modificar el puntero de escritura está sizeof(struct sRegistro) bytes delante de lo que realmente quieres modificar. La solucion es tan simple como parece: cuando has encontrado el objetivo haces un fseek sizeof(struct sRegistro) bytes atras y ya tienes posicionado el puntero de escritura para sobreescribir el objetivo.

Saludos
vosk