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