Problema con Metodo Hash

Maniakz
05 de Noviembre del 2005
Estoy creando un programa el cual se guardan la informacion mediante un metodo hash. El problema es que no me lo respeta, si lo abro en modo at+, me manda al ultimo y si lo abro en "w" me lo destruye. Alguien sabe una manera para que no me destruya la información respetandome el metodo hash? saludos.

Código usado:

write ()
{
int hash;
FILE * archivo;
if((archivo = fopen ("archivo.txt", "at+"))==NULL)
puts ("ERROR");
else
{
rewind(archivo);
fflush(stdin);
hash=hashmod(libro.clave);
fseek(archivo, (hash*sizeof(libro)), SEEK_SET);
fwrite (&libro, sizeof(libro),1,archivo);
fclose (archivo);
}
return 0;
}