Guarda che se fai una fwrite il puntatore di posizione all'interno del file si sposta dopo il numero:
La fread() parte dalla posizione indicata con ^, quindi non legge nulla.codice:NUMERO ^
Fai un fseek() all'inizio del file e poi fai la tua fread().
In ogni caso, non credere che una select sia particolarmente costosa; se c'e' l'indice per la colonna in questione, sono 2 accessi in lettura al filesystem: 1 per l'indice e 1 per il dato, e' comunque risibile.
In ogni caso, qualunque problema reale tu stia cercando di risolvere, sono sicuro - non te ne avere - che questa sia una soluzione del cavolo. Prova a postare il problema reale e vediamo di trovare una soluzione un minimo piu' elegante, questa e' orripilante(senza offesa :])