問題があるとわかっている検索機能がありますが、修正できないようです。子プロセスを検索する機能を使用しています。
これは私が使用しているテストファイルです
key2 コンピューター サイエンスの准教授 Patrick Eugster は、博士号との共同作業である彼のプロジェクト Geo-Distributed Big Data Processing で、key2 Google の後援研究賞を受賞しています。学生 Chamikara Jayalath と Julian Stephe 23456 key1 2013 年 2 月 21 日に開催されたパデュー大学理学部の年次教員およびスタッフ アワード プログラムで、数人のコンピュータ サイエンスの教職員が表彰されました。 key2 数人のコンピュータ サイエンスの教職員がパデュー大学で表彰されました。 2013 年 2 月 21 日に開催された、理学部の年次教員キー スタッフ アワード プログラム。
で結果を取得する必要があります
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;
}
さらにコードが必要な場合はお知らせください。