#include #include #include #define N_C 20 struct _keyword { char key[N_C]; struct _keyword *next; }; struct _revisori { char cognome[N_C]; char nome[N_C]; char mail[N_C]; struct _revisori *next; struct _keyword *primo; }; typedef struct _keyword keyword; typedef struct _revisori revisori; revisori *primo=NULL; void carica(void); //void ricerca(void); void main(int argc ,char *argv[]) { carica(); } void carica() { FILE *fp; char *cognome,*nome,*mail,*k,riga[150]; revisori *p1; keyword *temp; if((fp=fopen("revisori.txt","r"))==NULL) { printf("Errore di apertura del file.\n"); exit(1); } while(fgets(riga,150,fp)!=NULL) { if(riga[strlen(riga)-1]=='\n') riga[strlen(riga)-1]='\0'; cognome=strtok(riga," "); nome=strtok(NULL," "); mail=strtok(NULL," "); if(!primo) { primo=(revisori*)calloc(1,sizeof(revisori)); strcpy(primo->cognome,cognome); strcpy(primo->nome,nome); strcpy(primo->mail,mail); p1=primo; } else { p1->next=(revisori*)calloc(1,sizeof(revisori)); p1=p1->next; strcpy(p1->cognome,cognome); strcpy(p1->nome,nome); strcpy(p1->mail,mail); } while((k=strtok(NULL," "))!=NULL) { if(!p1->primo) { p1->primo=(keyword*)calloc(1,strlen(k)); strcpy(p1->primo->key,k); } else { temp=(keyword*)calloc(1,strlen(k)); strcpy(temp->key,k); } } } }