//功能:isword()为判断是否为词库中的词的函数,通过递归判断一个词是否是复合词(词可以拆成若干独立的词)
int CutCom(char *str)
{
wordCount++; // 全局变量,初始值为0
if(str == 0) return 1;
if(strlen(str) == 0) return 1;
if(strlen(str) < 4) return 0;
int len = strlen(str);
char *str_pre = (char *)calloc(sizeof(char),len);
int i = 4;
while(i < len + 1){ //i没有自加
char *str_suf = (char *)calloc(sizeof(char),len - i + 1);
wordcopy_pre(str_pre,str,i);
wordcopy_suf(str_suf,str,i);
str_pre[i] ='\0';
if((len == i) && len == length_StrArr) return 0; // legnth_StrArr 全局变量,初始值为0
if(isword(str_pre)&&CutCom(str_suf))
{
fputs(str_pre,fComToWords);
fputs("\r",fComToWords);
fputs("\n",fComToWords);
return 1;
}
wordCount = 0;
i++;
i++;
}
if((i == len + 2) && wordCount == 0)
return 0;
}
void wordcopy_pre(char *str_p,char *str,int i)
{
int len = i;
char *pstr_p = str_p;
char *pstr = str;
int index(0);
int count(0);
while(index++ < len){
//count++;
*pstr_p++ = *pstr++;
}
}
void wordcopy_suf(char *str_suf,char *str,int i)
{
int index(0);
int len = i;
char *pstr = str;
char *pstr_suf = str_suf;
while(index++ < len)
*pstr++;
while(*pstr){
*pstr_suf++ = *pstr++;
}
}
int isword(char *str)
{
char *StrArr = str;
int ArrIndex = ELFHash(StrArr);
int Location = Arr[ArrIndex].SearchList(StrArr);
if(Location<0)
return 0;
else
return 1;
}