Jarvis2345 Ответов: 3

Как подсчитать конкретные слова в текстовом файле


количество строк и конкретных слов, присутствующих в текстовом файле, должно быть подсчитано. я не смог сосчитать конкретные слова, присутствующие в текстовом файле. может ли кто-нибудь помочь мне с этим? Заранее спасибо.

Что я уже пробовал:

#include <stdio.h>
#include <string.h>

int main()
{
 FILE *fp;
 char filename[100];
 char ch;
 int linecount;

 linecount = 0;

  printf("Enter a filename :");
  gets(filename);

   fp = fopen(filename,"r");

   int match( char *word )
{
  char *targets[] = {"auto", "the", ""};
  char **t = targets;

  while ( *t[0] != '\0' && strcmp(*t, word))
    t++;

  return *t[0] != '\0';
}


   if ( fp )
   {
       while ((ch=getc(fp)) != EOF) {

      if (ch == '\n') { ++linecount; }

       }

       if (linecount > 0) {
        ++linecount;
       }
    }
   else
      {
         printf("failed to open the file\n");
      }

    printf("Lines : %d \n", linecount);

return(0);
}

Rick York

Есть ли у вас определение того, что составляет слово? Обычно существуют разделители, которые определяют границы для слова. Это будут такие вещи, как пробелы и знаки препинания. Учитывая, что у вас есть определенные разделители, вы можете найти функцию strtok полезной. У меня есть.

Maciej Los

Мой виртуальный 5!

3 Ответов

Рейтинг:
2

KarstenK

Решение очень простое, сканируя файл на наличие слов и храня каждую запись в массиве, который также выполняет подсчет. Если бы вы строили свои структуры, это тоже выглядело бы прекрасно.

struct wordCounter {
  int count = 0;
  char *word;
}
Позаботьтесь о выделении и освобождении памяти с помощью alloc(), realloc() и free(). Вам нужно выделить и память слов тоже и сохранить размер массива слов.


Рейтинг:
0

Patrice T

Цитата:
Как подсчитать конкретные слова в текстовом файле

Привет Джарвис/Сэмюэль вы уже опубликовали по существу тот же вопрос с другой учетной записью, это, как правило, расстраивает помощников здесь.
Как подсчитать строки, слова и ключевые слова в текстовом файле[^]
Ваше главное изменение-это удаление общего подсчета слов, так как это было неправильно.

Подсказка:
Ваша проблема заключается в том, что вы не можете считать слова только с 1 символом в то время.
Вам нужно вспомнить, каким был предыдущий символ.
У вас есть новое слово, когда последний прочитанный символ является частью слова, а предыдущий символ не является частью слова.
Вам также нужно определить, какой символ является частью слова.

Для подсчета конкретных слов:
сначала вам нужен список этих слов.
затем вам нужен способ обнаружения начала общих слов, что по существу является предыдущей задачей.
затем вам понадобится указатель, чтобы узнать, где вы находитесь в списке конкретных слов.
Совет: начните с обнаружения одного конкретного слова, а затем уточните.

Совет: чтение полной строки в буфере может упростить код.