codice:
typedef struct oggetto {
double volume,peso;
unsigned char colore[3];
} OGGETTO;
OGGETTO *elenco(char *fname, int*dim) {
FILE *fp;
OGGETTO *vect;
int i;
if ((fp = fopen(“fname”, “r”)) != NULL ) {
fscanf (fp, “%d\n”, dim);
vect = (OGGETTO*)calloc ((*dim)*sizeof(OGGETTO));
for (i=o; i<*dim; i++) {
vect[i].colore = (char*)calloc ((*dim)*sizeof(char));
}
for (i=0; i<*dim; i++) {
fscanf (fp, %d %lf %lf, vect[i].colore, &vect[i].volume, &vect[i].peso);
}
}
else {
perror (fname);
return NULL;
}
fclose (fp)
}
return vect;
}
Ciao , intanto userei la funzione malloc() , e comunque la calloc() non si usa in quel modo
calloc(numero_elementi , dimensione_byte) .
unsigned char colore[3]; è un array di tre elementi , non un puntatore , quindi non
devi allocare memoria !
colore è un array di char nella fscanf() non userai %d ma %s
questa parte
for (i=o; i<*dim; i++) {
vect[i].colore = (char*)calloc ((*dim)*sizeof(char));
}
La puoi eliminare .