0

私は C++ をかなりよく知っており、別の設定で使用するために、C++ で作成したプログラムを C に変換するように言われました。これまでプレーン C でコードを書いたことがなく、問題が発生しています。次の関数は、.txt ファイルを読み取り、内部の値を double 配列に入力することになっていますが、配列を出力するたびに、すべての値は-92559631349317831000000000000000000000000000000000000000000000000000.00000. ただし、印刷する前にコードの値を手動で変更すると、正しい値が得られます。入力関数は次のとおりです。

void FileRead(double *AttPos)
{
    int j = 0;
    FILE *in_file;
    in_file = fopen("DragonData.txt", "r");

    if (in_file == NULL)
    {
        exit(1);
    }
    else
    {
        for(j; j<8; j++)
        {
            fscanf(in_file, "%lf", &AttPos[i]);
        }
        fclose(in_file);
    }
}

入力ファイルは次のとおりです。

12345
0.13717085
0.91813290
0.73543816
-0.67362091
111
-63
11000
4

1 に答える 1

1

コードの間違いによるものだと思います。

for(j; j<8; j++)
{
    fscanf(in_file, "%lf", &AttPos[i]);
}

その配列インデックスは i ではなく j である必要があります。値は実際には配列に入れられていません。

于 2012-04-12T05:20:30.510 に答える