Ovviamente il punto interferisce con la lettura in quanto interpretato come punto decimale (per un double).
Dato che sono interi, leggi così
fscanf(fp, "%d.", &val);
(nota il punto che verrà saltato) in cui val è un intero e poi convertilo in double