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
e un array di utentecodice:struct mail { char mittente[LENGTH]; int size; void *buf; }; struct utente { char username[LENGTH]; mail *lista_mail; };
definite globalmente.codice:struct utente * lita_utenti;
nel main, "compongo una mail" facendo:
se facciocodice:struct mail nuova; char messaggio[100] = {"prova messaggio"}; nuova.size = 100; strcpy(nuova.mittente, "sono il mittente"); nuova.buf = (void *)messaggio;
il messaggio si visualizza bene.codice:printf("%s", (char *)nuova.buf);
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:
di nuovo, facendocodice:lista_utente[0].lista_mail[0] = nuova;
il messaggio si visualizza bene.codice:printf("%s", (char *)lista_utente[0].lista_mail[0].buf);
fin qui tutto ok, poi però, se chiamo una funzione da me definita all'interno dello stesso sorgente:
print_mail();
che è in questo modo:
il mittente si visualizza bene, mentre il "corpo" della mail ha caratteri sballati tipo ?? e dimensione errata.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; }
non riesco a capire proprio dove sbaglio.

Rispondi quotando