Ciao, in questo codice utilizzo la funzione malloc al di fuori del ciclo "do while", ciò vuol dire che mi alloca la memoria necessaria solo al primo elemento dell'array (giacchè nel sizeof non ho specificato "n*" è come se avessi scritto 1*).
Solo così il programmino riesce a girare; secondo me invece dovrei allocare 1 elemento per ogni volta che scelgo di inserire un nuovo dato. Se, però inserisco la malloc all'interno del "do while" il programma non gira.
Mi sa che così, anche se funziona tutto, gestisco male la memoria.
Qualcuno potrebbe chiarirmi le idee?
grazie in anticipo
codice:
struct mail{
            char indirizzo[30];
        } *email = NULL;
        int i=-1; 
        int n=0;
        char scelta[2];
        email=(struct mail*)malloc(sizeof(struct mail));
        do {
            i++;
            printf("\nInserisci il %d° indirizzo email: ",i+1);
            scanf("%s", email[i].indirizzo);
            printf("\nNuovo indirizzo?: ");
            scanf("%s", scelta);
        } while (strcmp(scelta,"s")==0);
        for (n=0; n<=i; n++) {
            printf("\nMail nr.%d: %s",n+1,email[n].indirizzo);
        }
        free (email);