• 締切済み

読み込んだデータを構造体に割り当てる

構造体を作り、for ループをつかってそれぞれの行列に、fscanf を使ってデータを読み込み、出力した所、データは適当な行列に入っているのを確認しました。その直後、別のfor ループで出力してみたところ、行列のデータは違うものになっていました。 具体的にコードを書くと、 for(j = 0; j < 2; ++j){ for(k = 0; k < 2; ++k){ fscanf(my_stream, "%d", &my_array[j][k]); printf("1: my_array[%d][%d] = %d?n", j, k, my_array[j][k]); } } この出力は以下のように、予想したのとあっているものでした。 1:my_array[0][0] = 1 1:my_array[0][1] = 2 1:my_array[1][0] = 3 1:my_array[1][1] = 4 その直後、 for(j = 0; j < 2 ++j){ for(k = 0; k < 2; ++k){ printf("2: my_array[%d][%d] = %d?n", j, k, my_array[j][k]); } } で出力した所 2:my_array[0][0] = 3 2:my_array[0][1] = 4 2:my_array[1][0] = 3 2:my_array[1][1] = 4 このようになっていました。 もし分かる方がいらっしゃったら、アドバイスよろしくお願い致します。とても困っています。

みんなの回答

  • ppg-2
  • ベストアンサー率39% (77/193)
回答No.1

その直後、 for(j = 0; j < 2 ++j){ の部分にセミコロンがないのですが・・・

komomomo
質問者

お礼

回答ありがとうございました。 問題が解決したので報告します。 構造体を定義するときに、その構造体のサイズは読み込むファイルのデータに依っていました。その後ファイルを読み込んで、質問したように書き出そうとしていました。つまりメモリの大きさを定義出来ていなかったため、問題が生じたようです。 まず読み込むファイルのデータから大きさを求め、次に構造体を定義した所、無事解決しました。 この質問を目にとめて下さった方、ありがとうございましたm(_ _)m。

komomomo
質問者

補足

ごめんなさい。質問するときにしたタイポです。 でもプログラム自体の問題は解決されてないので、引き続きアドバイスがあったらよろしくお願いします。

関連するQ&A