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