non hai allocato la memoria alla stringa iniziale, ocis i primi 4 byte vengono messi nell'indirizzo della stringa, e gli altri messi al posto dei valori, a dire la verrità nn capisco perchè nn ti dia erore di acesso a memoria non allocata o protetta,se ti capitava lo avresti capito + facilmente.e inoltre dovresti differenziare la lettura della stringa dai dati binari,perchè non puoi sapere quanto è lunga la stringa, se vuoi propio risparimiare memoria usa un vettore di char come buffer per la stringa e poi alloca la dimensione corretta, o metti direttamente il vettore di char nella struttura, ma ricordati che devi comunque separare le diverse letture dei dati