我有一个搜索功能,我知道这是问题,但似乎无法修复它。我正在使用该功能在我的子进程中进行搜索。
这是我正在使用的测试文件
key2 计算机科学副教授 Patrick Eugster 的项目地理分布式大数据处理项目获得了谷歌赞助的研究奖 key2,该项目是与博士的联合工作。学生 Chamikara Jayalath 和 Julian Stephe 23456 key1 几位计算机科学教职员工于 2013 年 2 月 21 日在普渡大学理学院的年度教职员工奖励计划中获得认可。 key2 几位计算机科学教职员工在普渡大学获得认可2013 年 2 月 21 日理学院年度教职员工奖励计划。 key1 key1 key1 几位计算机科学教职员工在普渡大学获得认可
我应该得到结果
key1: 4
key2: 3
但我得到我的结果
key1: 4
key2: 1
我哪里错了?
这是代码:
int search(FILE *file, char *key, int bufferSize, long int start)
{
int wordCtr = 0;
int buffer = 0;
if ( file != NULL )
{
printf("test 1 at position %ld in file\n", ftell(file));
fseek(file, start, SEEK_SET);
int ch, word = 0;
char currentWord[MAX_WORD_LEN];
int i = 0;
int counter = 0;
while ((ch = fgetc(file)) != EOF && counter < MAX_BUFFER_SIZE-1)
{
counter++;
if (isspace(ch)|| ch =='\n' || ch =='\t' && (buffer++ < bufferSize))
{
if(word)
{
word = 0;
currentWord[i++] = '\0';
i = 0;
if(!strcmp(currentWord, key))
{
wordCtr++;
}
}
}
else
{
word = 1;
currentWord[i++]=ch;
}
}
}
return wordCtr;
}
如果需要更多代码,请告诉我。