Salve a tutti nel codice c che vi mostro creo una struttura e alloco gli elementi della struttura dinamicamente in una funzione. A questa funzione passo una l'array p di tipo Prodotto che ho definito nel main con taglia prefissata. Ora vorrei sapere se è possibile rendere questo array di taglia prefissata, dinamico. Credo si possa fare, ma non ne ho idea
codice:#include <stdlib.h> #include <stdio.h> #define MAXN 20 typedef struct Prodotto{ char *id_prodotto; char *nome; float *prezzo; }Prodotto; int inserimento(Prodotto p[]); void stampa(Prodotto p[], int nprodotti); int main(){ Prodotto p[MAXN]; int nprodotti; nprodotti = inserimento(p); int inserimento(Prodotto p[]){ int nprodotti; int i = 0; char buffer[MAXN]; float b; printf("Quanti nuovi prodotti vuoi inserire?\n"); scanf("%d", &nprodotti); while(i<nprodotti){ printf("\nId prodotto: "); scanf("%s", buffer); p[i].id_prodotto = calloc(strlen(buffer)+1, sizeof(char)); strcpy(p[i].id_prodotto, buffer); printf("\nNome: "); scanf("%s", buffer); p[i].nome = calloc(strlen(buffer)+1, sizeof(char)); strcpy(p[i].nome, buffer); printf("\nPrezzo: "); scanf("%f", &b); p[i].prezzo = calloc(1, sizeof(float)); *p[i].prezzo = b; i++; } return nprodotti; } void stampa(Prodotto p[], int nprodotti){ int i = 0; while(i<nprodotti){ printf("Id_prodotto: %s\n", p[i].id_prodotto); printf("Nome: %s\n", p[i].nome); printf("Prezzo: %f \n", *p[i].prezzo); i++; } } }


Rispondi quotando