0

我正在尝试制作一个程序,该程序从文件中读取,对所有唯一单词进行排序并将其计数到数组中。我已经在程序中测试了我所有的方法并且它们有效,但是我在最终测试中遇到了问题。这是它的样子:

#include <stdio.h>
#include "WordReader.h"
#include "DataSet.h"
#include "TextString.h"

int main(void)
{
    FILE *input = fopen("text.txt","r");
    WordReader* r = createWordReader(input);
    DataSet* s= createDataSet();

    TextString* nextWord= readNext(r);

    while(nextWord !=0)
    {
         if(!isMember(s, nextWord))
         {
            insert(s, nextWord);     
         }
         TextString* nextWord= readNext(r);`enter code here`
    }

    closeReader(r);

    printf("%d\n", toString(TextString nextWord) +
          "contains" + size(s) + "Distinct Words");

}

事情是当我在 cygwin 中执行程序时,我在第 27 行收到以下错误它说expected expression before 'TextString'。两周前我开始使用 C 语言,但我不太了解它,所以请寻求帮助。

4

2 回答 2

1

您的代码有些模棱两可,但是要将变量作为参数传递给函数,您不需要指定它的类型,只需指定变量的名称。所以第 27 行应该只有toString(nextWord)。此外,C 中不存在通过 + 的字符串连接,如果您定义运算符,它可能存在于 C++ 中。对象也不是 C 的一部分,只有 C++。您可以先使用 strcpy() 在临时缓冲区中进行字符串连接,然后根据需要调用尽可能多的 strcat() 。要通过 printf() 输出字符串,格式参数也应该是“%s\n”。

但是,这可能无法解决您的所有问题,因为我不知道这些本地头文件的内容是什么或编译中使用的任何其他文件。

于 2013-09-22T17:44:39.693 回答
0

我认为声明

TextString* nextWord= readNext(r);`enter code here`

导致此错误。
如果enter code here是注释,那么它应该是,//enter code here否则这不是 C 中的有效语法。

于 2013-09-22T18:05:39.617 回答