ciao a tutti ho un problema che non riesco a risolvere da ore e ore
e più ci provo più la stanchezza mi impedisce di capire..
Ho queste 2 struct
codice:
 
struct mail {
	char mittente[LENGTH];
	int size;
	void *buf;
};

struct utente {
	char username[LENGTH];
	mail *lista_mail;
};
e un array di utente
codice:
 
struct utente * lita_utenti;
definite globalmente.

nel main, "compongo una mail" facendo:
codice:
 
struct mail nuova;
char messaggio[100] = {"prova messaggio"};
nuova.size = 100;
strcpy(nuova.mittente, "sono il mittente");
nuova.buf = (void *)messaggio;
se faccio
codice:
 
printf("%s", (char *)nuova.buf);
il messaggio si visualizza bene.

Poi alloco spazio necessario per aggiungere un utente alla "lista_utenti".
Aggiungo quindi un nuovo utente a questa lista.
Poi alloco spazio necessario per aggiungere una mail alla "lista_mail" dell'utente.
Aggiungo quindi la nuova mail, tramite:
codice:
 
lista_utente[0].lista_mail[0] = nuova;
di nuovo, facendo
codice:
 
printf("%s", (char *)lista_utente[0].lista_mail[0].buf);
il messaggio si visualizza bene.

fin qui tutto ok, poi però, se chiamo una funzione da me definita all'interno dello stesso sorgente:

print_mail();

che è in questo modo:
codice:
int print_mail () {
	printf("mittente: %s\n", lista_utenti[0].lista_mail[0].mittente);
	printf("mittente: %s\n", (char *) lista_utenti[0].lista_mail[0].buf);
	return 0;
}
il mittente si visualizza bene, mentre il "corpo" della mail ha caratteri sballati tipo ?? e dimensione errata.
non riesco a capire proprio dove sbaglio.