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.