¿Estás seguro de que esta guardando en el archivo? Yo creo que no lo está haciendo bien. Fíjate en esta línea:
Código:
...
fwrite(&total,sizeof(int),1,file);
fwrite(d,sizeof(d),total,file);
...
Si
d es un puntero,
sizeof(d) te va a retornar el tamaño del puntero en memoria, no del arreglo.
Saludos