Devi allocare dinamicamente l'array e poi restituire indirizzo e dimensione.
codice:
Prodotto *inserimento(int *dim){
int i = 0;
char buffer[MAXN];
float b;
printf("Quanti nuovi prodotti vuoi inserire?\n");
scanf("%d", dim);
Prodotto *p = (Prodotto *)sizeof((Prodotto)*(*dim));
while(i<(*dim)){
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 p;
}
//nel main
int nprodotti;
Prodotto *p = inserimento(&nprodotti);
Attenzione che le definizioni di funzione vanno fuori dal main...