codice:
#include <stdio.h>
#include <stdlib.h>

struct persona {
	int numero ;
	char *nome ;
	char cognome [6] ;
} ;

typedef struct persona persona ;

int main ()


{
   FILE *Jtr ;

   persona persona ;
    
	if ( (Jtr = fopen ("persona.dat" , "wb" ) ) != NULL )

	{

        /* inizializzo la struttura */

	persona.numero = 1 ;
	persona.nome = "tony" ;
	gets (persona.cognome) ;


        fwrite (&persona  , sizeof (struct persona  ) , 1 ,  Jtr ) ;
	fprintf (stdout , "%s\n" , persona.nome ) ;
	}
  


	fclose (Jtr ) ;
	system ("PAUSE") ;

	return 0 ;
}

quando vado per leggerla con questo codice :


codice:
#include <stdio.h>
#include <stdlib.h>

struct persona {
	int numero ;
	char *nome ;
	char cognome [6] ;
} ;

typedef struct persona persona ;

int main ()


{
	
   FILE *Jtr ;

    persona persona ;


    
	if ( (Jtr = fopen ("persona.dat" , "rb" ) ) != NULL )
	{

	fread (&persona  , sizeof (struct persona  ) , 1 ,  Jtr ) ;

	fprintf (stdout , "%d%s\n" , persona.numero , persona .cognome   ) ;
        fprintf (stdout , "%s\n", persona .nome   ) ; /* questa e la riga che mi crea problemi */
	

	}
  


	fclose (Jtr ) ;
	system ("PAUSE") ;

	return 0 ;
}
mi da errore di allocazione della memoria ;

qualcuno sa spiegarmi il perchè ?
grazie