Java与C |将对象作为参数传递

Java与C |将对象作为参数传递,java,c,class,object,constructor,Java,C,Class,Object,Constructor,最近我开始学习C语言,我对这里的东西感到困惑-> 我有一个Java程序,它读取一个文件并计算其中的单词。现在我试着用C重新写它 所以,在Java中,我有这样一个: 使用main()方法初始化 在WR类的构造函数旁边 private static final int READING_WHITESPACE = 11; ... private int state; private BufferedReader reader; public WordReader(Fil

最近我开始学习C语言,我对这里的东西感到困惑->

我有一个Java程序,它读取一个文件并计算其中的单词。现在我试着用C重新写它

所以,在Java中,我有这样一个:

使用main()方法初始化

在WR类的构造函数旁边

   private static final int READING_WHITESPACE = 11;
   ...

   private int state;
   private BufferedReader reader;

   public WordReader(File words)
   {
      state = READING_WHITESPACE;
      try
      {
         reader = new BufferedReader(new FileReader(words));
      }
      catch (FileNotFoundException e)
      {
      }
   }
一切都已初始化,可以使用

现在在C中是:

(主要课程)

现在让我困惑的是,我需要在WR构造函数中处理这个文件对象

(WR的头文件)

(WordReader.c)


在主类中,您已经使用
fopen
获取要从中读取的文件的文件句柄,并将其作为参数传递给
createWordReader
。您可能只想将文件句柄保存在WordReader结构中,以便在将来调用
fread
时从文件中读取数据时使用它

reader->file = fileToRead;

我想你在找这个:

reader -> file = fileToRead;

如果在
C
中没有类,那么就没有结构,没有对象,没有构造函数或析构函数。。只需分配
reader->file=fileToRead@nachokk我还没有用C术语。Java不断涌现。是的,现在你指着它。如果我仔细想想,这是很明显的。我还没有使用C语言,从Java转换过来后,我感到很困惑。
typedef struct _WordReader
{
   int state;
   FILE* file;
} WordReader;

WordReader* createWordReader(FILE* fileToRead);
...
    WordReader* createWordReader(FILE* fileToRead)
    {
            WordReader* reader = malloc(sizeof(WordReader));
            reader -> state = READING_WHITESPACE;
            //-----------------
            reader -> file; // What to do with it?
            //-----------------
            // reader -> file = fopen(fileToRead, "r"); Maybe? I've tried like this but   
all I get is a bunch of errors.
            //-----------------
       return reader;
    }
reader->file = fileToRead;
reader -> file = fileToRead;