-1

次のようなファイルを、既に割り当てられている 1 次元配列に読み込みたいと思います。

   4 4
   1 2 3 4
   5 6 7 8
   9 10 11 12
   13 14 15 16

最初の行は行/列の数を指定し、その後に行列の値が続きます。私のコードは次のとおりです。

int rows, cols;
infile = fopen("input1.dat", "r");
fscanf(infile, "%d %d\n", &rows, &cols);
printf("Rows: %d, Cols: %d\n", rows, cols);
int i, j;
double cur = 0;
for (i = 0; i < m; i++) {
    for (j = 0; j < n; j++) {
        cur = fscanf(infile, "%lf", &cur);
        printf("%lf\n", cur);
        matrix[(i*m)+j] = cur;
    }
}  

出力は次のようになります。

Rows: 4, Cols: 4
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000

私はサイトを1時間検索してきましたが、row/cols行の後の最初の行からでも、値が読み取られない理由がわかりません。助けてくれてありがとう!

4

4 に答える 4

0
cur = fscanf(infile, "%lf", &cur);

intocurの戻り値を読み込んで保存することもできません。別の ( ) 変数を使用して、戻り値を格納します (失敗する可能性があることを確認します)。fscanfcurintfscanf

于 2013-06-01T10:26:24.597 に答える
0
 cur = fscanf(infile, "%lf", &cur);

これは、読み取った値を上書きしている問題です

正しいでしょう

 int read = fscanf(infile, "%lf", &cur);
于 2013-06-01T10:26:53.273 に答える
0

fscanf成功すると 1 を返すので、次のようになります。

cur = fscanf(infile, "%lf", &cur);

しますcur == 1。代わりに試してみてください:

fscanf(infile, "%lf", &cur);
于 2013-06-01T10:27:27.823 に答える
0

問題はラインにあります

cur = fscanf(infile, "%lf", &cur); 

最初に fscanf を使用して cur に正しい値を設定し
ますが、次に、fscanf によって返される値を cur に割り当てます

于 2013-06-01T10:31:44.057 に答える