He compilado el código y me ha dado unas cuantas advertencias. Deberías vigilarlas. Yo no voy a mostrar las advertencias pues lo puedes mirar tu mismo, pero aun así es preferible que un programa no las tenga, pues son potenciales errores que después cuesta solucionar (lo digo por experiencia).
Respecto al error, es bastante fastidiante (me ha pasado hace poco xD). Lo que pasa es que el indicador de feof se activa solo cuando se intenta leer un carácter pero ya no quedan más. Entonces, cuando terminas de leer el último registro, no llegas a activar el feof y por lo tanto el while se ejecuta una vez más.
Para solucionarlo, puedes comprobar que no has llegado al final del archivo antes de mostrar el supuesto registro:
n++;
for(x = 0; x <= 19; x++)
fscanf(fPtr
, "%c", &XRecord.
Charac[x
]);
if(!feof(fPtr
)) { // Compruébalo aquí printf("Record Number:%d\n",n
);
for(i=0;i<=19;i++)
printf("%c", XRecord.
Charac[i
]);
}
}