0

ファイルから読み取る最初の行で作成した可変長配列にアクセスする必要があります。次の行を読んでいるときに配列にアクセスするには、条件ステートメントの外側で行 1 を読み取る前に配列を初期化する必要があります。しかし、これは配列の長さを知る前です。

ここに私のコードの例があります

int count=0;
while (fgets(line, sizeof(line), fd_in) != NULL) {
  if(count==0){
    //get wordcount from line
    int word[wordcount];
    //put line data into array, using strtok()
  }else{
    //need to access the array here
  }
  count++;
}

編集:私の質問は、必要な場所でこの配列にアクセスできるようにするにはどうすればよいですか?

4

2 に答える 2

2

wordループの反復間で配列の内容を保持したいようです。つまり、配列をループのスコープに配置する必要があります。質問コードでは、ループ内のサイズを決定したいので、基本的に VLA のサイズを再定義する必要がありますが、これは不可能です。別の回答に示されているように使用してこれを行うことができますがmalloc、コードを見ると、への呼び出しを複製してfgets、VLA の定義をループの外に移動できるようにすることをお勧めします。

if(fgets(line, sizeof(line), fd_in) != NULL) {
    //get wordcount from line
    int word[wordcount];
    //put line data into array, using strtok()
    int count = 1; //  start from 1 per your question code, is it right?
    while(fgets(line, sizeof(line), fd_in) != NULL) {
        //need to access the array here
        count++;
    }
}
于 2014-05-01T14:33:26.903 に答える