È da un po' che sto sbattendo la testa su questo esercizio ma non riesco proprio a venirne a capo:
-creare una funzione di nome duplicaStruct che dato in ingresso una struct INFO ne restituisca il suo duplicato allocato in maniera dinamica.
Ho cercato su google e non sono riuscito a trovare una soluzione, ho provato con memcpy e funziona, ma ovviamente non è quello che mi chiede la traccia

funzione duplicaStruct:
codice:
struct INFO *duplicaStruct(struct INFO *s, int i){
    struct INFO *s2 = (struct INFO *)malloc(sizeof(struct INFO));
    s2[i].codice = s[i].codice;
    strcpy(s2[i].nome, s[i].nome);
    s2[i].npezzi = s[i].npezzi;
    s2[i].prezzo = s[i].prezzo;
    return s2;
}
utilizzo nel main:
codice:
int main(){
    struct INFO *s[MAXLEN];
    struct INFO *s2[MAXLEN];
    ...
    for(i=0;i<n;i++){ //n è il numero di strutture create per s
        s2[i]=duplicaStruct(*s, i);
    }
    
    printf("-----STRUCT 1-----\n");
    stampaStruct(s, n);
    printf("-----STRUCT 2-----\n");
    stampaStruct(s2, n);
}
Output:
codice:
// Inserisco i valori per la struct 1
Codice: 1
Nome: Prodotto1
Prezzo: 5
Numero pezzi: 30

Codice: 2
Nome: Prodotto2
Prezzo: 2
Numero pezzi: 30

-----STRUCT 1-----
Codice: 1
Nome: Prodotto1
Prezzo: 5.00
Numero pezzi: 30

Codice: 2
Nome: Prodotto2
Prezzo: 2.00
Numero pezzi: 30

-----STRUCT 2-----
Codice: 1
Nome: Prodotto1
Prezzo: 5.00
Numero pezzi: 30

Codice: 0
Nome:
Prezzo: 0.00
Numero pezzi: 0