Avevo messo solo quella parte perché visto che per l'altra funziona bene pensavo il problema fosse lì.
Ecco tutto il programma:
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXLEN 50 struct INFO{ int codice; char nome[50]; float prezzo; int npezzi; }; 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; } struct INFO *riempiStruct(){ struct INFO *s=(struct INFO *)malloc(sizeof(struct INFO)); printf("Codice: "); scanf("%d", &(s->codice)); printf("Nome: "); scanf("%s", s->nome); printf("Prezzo: "); scanf("%f", &(s->prezzo)); printf("Numero pezzi: "); scanf("%d", &(s->npezzi)); return s; } int aggiungiStruct(struct INFO **s){ int n=0,i; for (i=0;i<MAXLEN;++i) s[i]=NULL; do { printf("Quante schede vuoi inserire?"); scanf("%d",&n); } while (n>MAXLEN); for (i=0;i<n;++i) { s[i]=riempiStruct(); } return n; } void stampaStruct(struct INFO **s, int n){ int i; for(i=0;i<n;i++){ printf("Codice: %d\n", s[i]->codice); printf("Nome: %s\n", s[i]->nome); printf("Prezzo: %.2f\n", s[i]->prezzo); printf("Numero pezzi: %d\n\n", s[i]->npezzi); } } int main(){ struct INFO *s[MAXLEN]; struct INFO *s2[MAXLEN]; int n=0, i; n=aggiungiStruct(s); for(i=0;i<n;i++){ s2[i]=duplicaStruct(*s, i); } printf("-----STRUCT 1-----\n"); stampaStruct(s, n); printf("-----STRUCT 2-----\n"); stampaStruct(s2, n); }

Rispondi quotando