Как подсчитать количество слов в текстовом файле с помощью C? - PullRequest
2 голосов
/ 10 сентября 2011

Мне нужна помощь с программой, которую я пишу для своего класса по системному программированию. Это на C, и у меня очень и очень небольшой опыт работы с C. Мне нужно объединить три текстовых файла в формате:

word1
word2
word3
...
wordX

Я также собираю каждое слово из всех трех файлов и помещаю их в двумерный массив (массив строковых массивов), а затем использую какой-то метод сортировки для них.

Мне не нужна помощь в сортировке, но я не знаю, как узнать количество слов в каждом из текстовых файлов или поместить их в массив.


Это функция, которая у меня есть для подсчета слов в файле. Он не компилируется в gcc (возможно, по понятным причинам, но я их не знаю). У меня даже есть правильная идея?

int countWords(FILE f){
   int count = 0;
   char ch;
   while ((ch = fgetc(f)) != EOF){
       if (ch == '\n')
           count++;
       //return count; originally here, but shouldn't be.
   }
       return count;
}

РЕДАКТИРОВАТЬ: Я предположил, что я мог бы просто найти способ подсчета строк в программе, но я не уверен, будет ли подход отличается от того, что я пытаюсь сделать здесь. (Я никогда не был так хорош в работе с текстовыми файлами.


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


#include <stdlib.h>
#include <stdio.h>

int countWords(FILE *f){
   int count = 0;
   char ch;
   while ((ch = fgetc(f)) != EOF){
       if (ch == '\n')
           count++;
   }
   return count;
}
int main(void){

   int wordCount = 0;
   FILE *rFile = fopen("american0.txt", "r");
   wordCount += countWords(rFile);
   printf("%d", wordCount);
   return 0;
}

Я как-то забыл об этом указателе с FILE * fileName

Спасибо за помощь, ребята.

Ответы [ 3 ]

2 голосов
/ 10 сентября 2011

Тип файла, который вы используете для файла c, равен FILE*. Эта звезда важна, указывая на то, что тип является «указателем на FILE». Вряд ли вы хотели написать countWords(FILE f).

Каждый раз, когда вы вызываете вашу функцию, она будет иметь новый count = 0, поэтому она всегда будет возвращать 0 или 1. Попробуйте использовать static int count;, сделав счетчик глобальной переменной или передав текущий счетчик функции. Другой вариант - переместить линию return count; за пределы цикла while.

Вам также, вероятно, потребуется разделить счет на два, чтобы получить количество слов в формате, который вы опубликовали.

2 голосов
/ 10 сентября 2011

Должно быть int countWords(FILE *f){, с *. И оператор return должен идти перед последним только }, вне цикла.

0 голосов
/ 23 сентября 2013

Вот код. Просто прочитайте количество пробелов, что это.

#include<stdio.h>
#define FILE_READ "file.txt"

    int main()

{
    FILE * filp;
    int count = 1;
    char c;
    filp = fopen(FILE_READ, "r");
    if(filp == NULL)
        printf("file not found\n");
    while((c = fgetc(filp)) != EOF) {
        if(c == ' ')
            count++;
    }
    printf("worrds = %d\n", count);
    return 0;
}

текстовый файл

I am megharaj, from india.

выход

worrds = 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...