ok! Mille grazie, all'inizio ero spaesato poi c'è l'ho fatta a capire e costruire le struct per il file.

Tuttavia fread() mi legge il codice al contrario!

Se ad esempio (lo metto in esadecimale così è più semplice capirci) i byte da leggere sono 4D546864 lui legge e stampa a video 6468544d

Come mai questo errore? Legge al contrario? Come posso risolvere?

Per stampare a video ho utilizzato un normale printf("stampo %x",mh.signature).

Ho segnalato quest'ultima cosa perché non vorrei sbagliare io ed invece credo sia fread.