Estoy trabajando con archivos binarios.

Uno de los requermientos que tengo, es modificar un registro, por ejemplo, cambiandole la ubicacion (coordenadas x e y).
Para esto, recorro el archivo y al encontrar el registro que deseo modificar, ubico (fseek) el apuntador del archivo una posicion antes, y escribo el nuevo registro.
El problema basicamente es que no escribe los cambios en el archivo. He hecho corridas por trazas aproximadamente unas mil veces

Espero entonces puedan revisar el codigo a continuacion, a ver si encuentran algun error.. paranormal!
Código:
//MODIFICAR: modifica una estacion void estaciones::modificar(struct_estacion esta_actual) { //abro archivo binario "ORIGINAL" FILE *ap_b=NULL; ap_b=fopen("estacion_b.dat","rb"); if (ap_b!=NULL) { struct_estacion tmp; int xx, num_reg, cont; fseek(ap_b,0,SEEK_END); xx=ftell(ap_b); num_reg=xx/(sizeof(struct_estacion)); //leer del archivo y comparar for (cont=0;cont<=num_reg;cont++) { fseek(ap_b,cont*sizeof(struct_estacion),SEEK_SET); fread(&tmp,sizeof(struct_estacion),1,ap_b); int comparacion_cad; comparacion_cad=strcmp(tmp.nombre,esta_actual.nombre); //si tiene el mismo nombre if (comparacion_cad==0) { fseek(ap_b,(-1)*sizeof(struct_estacion),SEEK_CUR); fwrite(&esta_actual,sizeof(struct_estacion),1,ap_b); fclose(ap_b); break; } } fclose(ap_b); } };
Esperando su respuesta!

