Salve, questo codice mi da un errore di segmentazione che non riesco a risolvere nonostante vari tentativi. Queste sono le strutture:
codice:struct Prodotto{ char tipo[20]; int quantita[N_PROD]; }Prodotto[N_PROD] = {{"Caffe"},{"Tessuti"},{"Spezie"},{"Legno"},{"Ceramiche"}}; typedef struct { int data; struct Prodotto venduto; }Giornata; typedef struct { char nome[20]; char cognome[20]; int codice; Giornata* giornata[MAX_GIORNI]; }Agente;
Questa è la funzione che da problemi. Viene chiamata da un'altra funzione che le passa i due parametri, a sua volta ricevuti dal main. La prima funzione li usa e non da problemi. Questa va in segmentazione sulla scanf indicata dalla freccia:
codice:void creaGiornate(Agente* ag, int i) { int j, num_giorni; printf("Quante giornate hai lavorato in questo mese? "); scanf("%d", &num_giorni); for(j = 0; j < num_giorni; j++) { ag[i].giornata[j] = (Giornata*)malloc(sizeof(Giornata)); if(ag[i].giornata[j] == NULL) { printf("Errore di allocazione!\n"); return; } printf("Inserisci il %d%c giorno di lavoro(da 0 a 30)", i + 1, 167); -->> scanf("%d", &ag[i].giornata[j]->data); inserisciVenduto(ag, i, j); } return; }
Ho provato a passare doppi puntatori, a rendere "giornata" vettore di struct, o anche solo struct(ma a quel punto non va bene la malloc perche restituisce sempre un puntatore).
L'idea è una serie di Agenti(chieste all'utente), per ogni agente una serie di giornate(chieste all'utente), per ogni giornata la quantità venduta di ognuno dei prodotti. Potrei farlo con le liste e credo sarebbe più comodo, ma vorrei risolverlo prima così.
Se serve per testarlo posto tutto il codice.

Rispondi quotando
