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