Я ищу слово/фразу в файле .txt.Извлечение фразы из строки
файл выглядит следующим образом:
apple tree '\t' data
apple '\t' data
apple pie '\t' data
Greek '\t' data
Holland ; Netherlands ; The Netherlands '\t' data
Я ищу char *word
внутри этого огромного файла. Мне становится сложно, когда у меня есть слова, такие как Netherlands
или The Netherlands
, и я хочу захватить эти данные.
Я сломал проблему на мелкие детали. Пока я знаю, сколько строк имеет файл и может использовать эту информацию для fseek для этой строки. Эти части работают независимо от этой части ниже.
file_lines = 12325;
// line_index[] every element corresponds to a line in to a line in the file.
char* buffer[256];
FILE fp = fopen(file.txt, "r")
int i, j, k;
for(i = line_index[index_start]; i < line_index[index_end]; i++)
{
fseek(fp, i, SEEK_SET);
fgets(buffer, 256, fp);
if(strstr(buffer, word) != NULL) // word is here
{
// having problems finding the word here
for(j = 0; j < 256; j++)
for(k = 0; k < 256; k++)
{
if(buffer[k] == word[k])
continue;
if(buffer[k] == ' ')
continue;
if(buffer[k] == ';')
break;
if(buffer[k] == '\t')
break;
}
}
}
Моя самая большая проблема - убедиться, что слово/фраза в этой строке. Я могу знать, какая потенциальная линия имеет экземпляр слова, но если я ищу яблоко, я могу получить яблочное дерево, если я не буду искать внутри этой строки правильно.
Пожалуйста, помогите.
Вы знаете, что strstr() возвращает вам указатель на слово в буфер, не так ли? Возможно, использование этого возвращаемого значения поможет. –
Результат strstr() минус адрес буфера - это индекс. Pointer arithmetics ... – SzG
Он дает вам указатель на буфер. –