Cómo modificar dato de un arhcivo sin tener que leerlo previamente

demet
30 de Octubre del 2005
El problema es el siguiente: voy leyendo secuencialmente un archivo y modificando determinados datos, que no necesito leer porque al llegar a su posición ya sé que tengo que modificarlos. Después de muchas pruebas he conseguido hacerlo de la siguiente forma:

pos=ftell(p);
fseek(p,pos,SEEK_SET);
fread(&var1,sizeof(long),1,p);
fseek(p, -sizeof(long),SEEK_CUR);
fwrite(&var2,sizeof(long),1,p);

El primer fseek se supone que no hace nada, deja el puntero del archivo donde estaba, pero si no lo hago exactamente así no escribe o no escribe bien, incluso se bloquea el ordenador. Utilizo el DEV C++.
¿Alguien puede decirme como hacer esto de una forma más eficiente y sin tener que leer previamente el dato?

Gracias de antemano.