gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:45:35 25 4
gpt4 key购买 nike

最近开始学习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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com