La fprintf, non va automaticamente alla riga successiva almeno che tu non lo voglia. Per questo tipo di scrittura su file ti suggerisco di utilizzare fwrite, per la lettura invece ti suggerisco fread che hanno la seguente sintassi:
fread(void *buffer,size_t size,size_t count,FILE *stream)
legge dei blocchi di dati da uno stream e li memorizza in un buffer (void *buffer), in base alle dimensioni del blocco (size_t size), e al numero dei blocchi (size_t count)
fwrite(void *buffer,size_t size,size_t count,FILE *stream)
stessa struttura della fread, solo che qui scriviamo