0

最近、私は 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;
    }
4

2 に答える 2

1

In your main class, you already used fopen to get a file handle for the file you want to read from, and you passed it as an argument to createWordReader. You probably just want to save the file handle in the WordReader struct, so that you can use it in future calls to fread when you want to read data from the file.

reader->file = fileToRead;
于 2013-09-21T19:12:14.847 に答える
0

私はあなたがこれを探していると思います:

reader -> file = fileToRead;
于 2013-09-21T19:15:28.187 に答える