#include #include #include struct Parola{ char s[100]; int len; int frase; }; int cercapal(char s[], struct Parola v[], int nfrase, int n); void stampa(struct Parola v[], int n); int main() { FILE *fp = fopen("input.txt","r"); char s[100]; struct Parola v[100]; if(fp!=NULL) { int cont=0,k=0; do{ fgets(s,100,fp); printf("%s",s); cont++; if(s[strlen(s)-1]=='\n') s[strlen(s)-1]='\0'; k=cercapal(s,v,cont,k); printf("trovate %d parole\n",k); }while(!feof(fp)); stampa(v,k); fclose(fp); } fp = fopen("output.bin","w"); if (fp!=NULL) { fwrite(v,sizeof(struct Parola),100,fp); fclose(fp); } } int cercapal(char s[], struct Parola v[], int nfrase, int n) { int i=0; int inizio=-1; int fine=-1; int l=n; if(s[0]!=' ') inizio=0; while(s[i]!='\0') { //cerca la prossima parola if(inizio<0) {if((s[i]==' ') && (s[i+1]!=' ')) inizio=i+1;} else if((s[i]!=' ') && ((s[i+1]==' ')||(s[i+1]=='\0'))) fine=i; if((inizio >=0) && (fine>=0)) { printf("inizio:%d, fine:%d\n",inizio,fine); int k=0; while((k<(fine-inizio+1)/2)&&(tolower(s[inizio+k])==tolower(s[fine-k]))) k++; if(k==(fine-inizio+1)/2) { v[l].len=fine-inizio+1; int t=0; for(t=0;t