#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"
int searchword(FILE* fp,char ch,char a[])
{
char b[100]={0};
int i=0;
while(ch!='�')
{
b[i++]=ch;
ch=fgetc(fp);
}
b[i]='\0';
while(strcmp(b,a)!=0)
{
i=0;
ch=fgetc(fp);
while(ch!='\n')
ch=fgetc(fp);
ch=fgetc(fp);
if(ch==EOF)
{
return 0;
break;
}
while(ch!='�')
{
b[i++]=ch;
ch=fgetc(fp);
}
b[i]='\0';
if(strcmp(a,b)==0)
{
return 1;
break;
}
}
}
void restore(FILE* fp,char ch,char a[])
{
char c[100]={0};
int i=0;
if((a[strlen(a)-3]=='i')&&(a[strlen(a)-2]=='e')&&(a[strlen(a)-1]=='s'))//是否加'ies'
{
for(i=0;i<strlen(a)-3;i++)
c[i]=a[i];
c[i++]='y';
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if((a[strlen(a)-2]=='e')&&(a[strlen(a)-1]=='s'))//是否加'es'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-2;i++)
c[i]=a[i];
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if(a[strlen(a)-1]=='s')//是否加's'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-1;i++)
c[i]=a[i];
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{ printf("%s ",c);
return;
}
}
if((a[strlen(a)-3]=='i')&&(a[strlen(a)-2]=='n')&&(a[strlen(a)-1]=='g'))//是否加'ing'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-3;i++)
c[i]=a[i];
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if((a[strlen(a)-3]=='i')&&(a[strlen(a)-2]=='n')&&(a[strlen(a)-1]=='g'))//是否去e加'ing'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-3;i++)
c[i]=a[i];
c[i++]='e';
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if((a[strlen(a)-4]==a[strlen(a)-5])&&(a[strlen(a)-3]=='i')&&(a[strlen(a)-2]=='n')&&(a[strlen(a)-1]=='g'))//是否双写加'ing'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-3;i++)
c[i]=a[i];
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if((a[strlen(a)-2]=='e')&&(a[strlen(a)-1]=='d'))//是否加'ed'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-2;i++)
c[i]=a[i];
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if((a[strlen(a)-2]=='e')&&(a[strlen(a)-1]=='d'))//是否e后加'd'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-1;i++)
c[i]=a[i];
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if((a[strlen(a)-3]=='i')&&(a[strlen(a)-2]=='e')&&(a[strlen(a)-1]=='d'))//是否去y变i加'ed'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-3;i++)
c[i]=a[i];
c[i++]='y';
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if((a[strlen(a)-4]==a[strlen(a)-3])&&(a[strlen(a)-2]=='e')&&(a[strlen(a)-1]=='d'))//是否双写加'ed'
{
for (i=0;i<100;i++) c[i]='0';
for(i=0;i<strlen(a)-3;i++)
c[i]=a[i];
c[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,c))
{
printf("%s ",c);
return;
}
}
if(strcmp(a,"went")==0) printf("go ");
if(strcmp(a,"sat")==0) printf("sit ");
if(strcmp(a,"gone")==0) printf("go ");
printf("词典中没有这个单词!\n");
}
void main()
{
int i=0;
char a[100]={0},c[100]={0};
char d;
char ch='0';
FILE* fp = NULL;
fp = fopen("dic_ec.txt","r");
if(fp==NULL)
{
printf("error on open file!\n");
getch();
exit(1);
}
else ch=fgetc(fp);
printf("请输一个英文句子:\n");
scanf("%c",&c[0]);
while((c[i]!='.')&&(c[i]!=',')&&(c[i]!='?')&&(c[i]!='!'))
{
while(c[i]!=' ')
{
a[i]=c[i];
if((c[i]=='.')||(c[i]==',')||(c[i]=='?')||(c[i]=='!'))
{
a[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,a)==1)
printf("%s\n",a);
else
{
restore(fp,ch,a);
printf("\n");
}
break;
}
scanf("%c",&c[++i]);
}
if((c[i]=='.')||(c[i]==',')||(c[i]=='?')||(c[i]=='!'))
break;
a[i]='\0';
fseek(fp,0,0);
if(searchword(fp,ch,a)==1)
printf("%s ",a);
else
restore(fp,ch,a);
scanf("%c",&c[0]);
i=0;
}
d=getch();
fclose(fp);
return;
}