У меня есть функция поиска, которая, как я знаю, является проблемой, но не может ее исправить. Я использую функцию для поиска в моих дочерних процессах.Функция поиска возвращает неправильный счет
Это тестовый файл я использую
доцент key2 компьютерных наук Патрик Eugster является получателем спонсируемого исследования премии key2 Google для своего проекта Geo-Distributed Big Data Processing, которая является совместная работа с доктором философии. студенты Chamikara Jayalath и Julian Stephe 23456 key1 Несколько преподавателей и сотрудников компьютерных наук были признаны в ежегодной программе преподавателей и преподавателей Университета Пердью в университете 21 февраля 2013 года. key2 Несколько преподавателей и сотрудников компьютерных наук были признаны в Университете Пердью колледж ежегодного факультета ключевых сотрудников программы Награды науки 21 февраля 2013 г. key1 key1 key1 Несколько компьютерных наук преподаватели и сотрудники признали в Purdue
я должен получить результат в
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;
}
Пожалуйста, дайте мне знать, если больше кода не требуется.
У вас возникли проблемы с номером, который вы задали в качестве размера буфера. Нужно ли указывать размер буфера для чтения по одному? isspace верно, что ('\ n', '\ t') – BLUEPIXY
Do ** not ** destroy your question. Я откат вашего редактирования для вас. –
сделал u попытался использовать отладчик – pm100