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++;
    }
}
}