#include #include #include #include struct _lista{ char *parola; int numero; struct _lista *next; }; typedef struct _lista lista; lista *head=NULL,*coda=NULL; FILE *fp; void carica(void); lista* check(char*); void add(char*); void stampa(void); int main(int argc, char *argv[]) { carica(); stampa(); getch(); } void carica(void) { lista *t; char *temp; char stream[256]; if((fp=fopen("file.txt","r"))==NULL) printf("File non esistente\n"); while(fgets(stream,255,fp)!=NULL) { if(stream[strlen(stream)-1]=='\n') stream[strlen(stream)-1]=='\0'; temp=strtok(stream, " "); if((t=check(temp))!=NULL) t->numero++; else add(temp); while((temp=strtok(NULL, " "))!=NULL) if((t=check(temp))!=NULL) t->numero++; else add(temp); } fclose(fp); } lista* check(char* temp) { lista *p1; for(p1=head;(p1!=NULL) && (strcmpi(temp,p1->parola)!=0);p1=p1->next); return p1; } void add(char *temp) { if(head==NULL) { head=(lista*)calloc(1,sizeof(lista)); head->parola=strdup(temp); head->numero=1; coda=head; } else { coda->next=(lista*)calloc(1,sizeof(lista)); coda->next->parola=strdup(temp); coda->next->numero=1; coda=coda->next; } } void stampa(void) { lista* p1; for(p1=head;p1!=NULL;p1=p1->next) printf("%s %d\n",p1->parola,p1->numero); }