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

标签 java c class object constructor

最近开始学习C,这里的东西让我很困惑->

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

所以,在 Java 中我有这个:

带有 main() 方法的类

...
File words = new File("AV1611Bible.txt");
WordReader wr = new WordReader(words);
...

以及 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 中是:

(主类)

     ...
     FILE* file;
     char* fileToRead = "toRead.txt";
     file = fopen(fileToRead, "r");

     WordReader* reader = createWordReader(file);
     ...

现在让我困惑的是我到底需要在 WR 构造函数中处理这个 FILE 对象。

(WR的头文件)

typedef struct _WordReader
{
   int state;
   FILE* file;
} WordReader;

WordReader* createWordReader(FILE* fileToRead);
...

(WordReader.c)

    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;
    }

最佳答案

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

reader->file = fileToRead;

关于Java 与 C |将对象作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18936480/

相关文章:

java - 仅重新启动单个应用程序 Apache Server

Java键盘钩子(Hook)

java - 为什么 KClass 声明为 KClass<T : Any> and not KClass<T> so that the type argument can be nullable

c - C 中的指针和局部变量

class - 在与语言无关的上下文和 typescript 中,环境类是什么?

java - 当使用多个同名的类时,您应该完全限定所有用途,还是仅限定 "rare"的用途?

c++ - 根据需要声明类变量

Java Swing 或 AWT 重绘频率

c - 一些 C 浮点常量没有意义

c - 在shell中调用C程序