3

我需要一些帮助,我正在为我的系统编程课程编写一个程序。它是用 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;
}

编辑:我想我可以找到一种方法来计算程序中的行数,但我不确定这种方法是否与我在这里尝试做的有什么不同。(我从来没有真正擅长处理文本文件。


我得到它来计算程序中的所有行。我想我有点生疏了。


#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

4

3 回答 3

2

应该是int countWords(FILE *f){,与*。并且该return语句应该在最后一个之前},在循环之外。

于 2011-09-10T19:30:33.017 回答
2

您在 c 中用于文件的类型是FILE*. 那颗星很重要,表明该类型是“指向文件的指针”。这不太可能countWords(FILE f)是你要写的。

每次你调用你的函数时,它都会有一个新的count = 0,所以它总是返回 0 或 1。尝试使用static int count;,使 count 成为一个全局变量,或者将当前的 count 传递给函数。您的另一个选择是将return count;线移到while循环之外。

您可能还需要使用您发布的格式将计数除以 2 以获得单词数。

于 2011-09-10T19:33:01.970 回答
0

这是代码。刚才看了几个空格,就知道了。

#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
于 2013-09-23T09:32:46.460 回答