これまでで一番「情けなかったとき」はいつですか?

5つのテキストファイル(txt)から定義した構造体の型の配列((定義した型)a[5])を用意して、それぞれのファイルからa[0]〜の構造体のメンバにデータを格納したく、ループで行ったのですが、何故か、a[0]〜a[4]の各メンバが同じ値となってしまいます。理由を教えてください

A 回答 (2件)

ご質問を次のように読み取りました。



●5つのテキストファイルがあり、それぞれに特定の(同じ)構造体の全メンバが異なる値で書き込まれている。
●ご質問者様が作成したプログラムに於いて、この構造体の配列を宣言( a [ 5 ] )し、各ファイルを読み取りながら、配列 a [ 0 ] - a [ 4 ]の各メンバに代入した。
●5つのデータの読み取りは、ループで行った。
●プログラムを実行すると、配列 a [ 0 ] - a [ 4 ]の各メンバに同じ値が代入されている。予測される原因は...?

原因を次のように考えます。代入済みの構造体メンバが「全て同じ値。」とのことですが、それは5つのテキストファイルのどれかに一致しているかどうかで、原因が異なると思われます。

●テキストファイルどれにも一致しない...
つまりちゃんとデータが読み取れていないことになります。ファイルのオープン/クローズ、実際のデータ読み取り、キャラクタ/数値の変換など、複数の要因が考えられます。
ご提示の内容よりももう少し踏み込んだ状況をお知らせいただけないと、原因の特定はできないと思います。

a)ファイルオープンに成功しているか...
b)プログラムで想定したデータを、ファイルから取り出せているか...
c)おそらくテキストで取り出したデータを int/float などに変換する必要もあるかもしれません。変換前後のデータが想定通りのものであるか確認しましょう。

通常のデバッガを使った作業が行い難いのであれば、printf()を必要箇所に挿入し、繰り返し実行してみることをお勧めします。

●テキストファイルのどれかに一致する...
この場合は、おそらく一番最初に読み取るテキストファイルの内容が、その他4個の構造体にも代入されている可能性が高く思われます。つまり、同じファイルを5回オープンしているかもしれません。
    • good
    • 0

たぶん「プログラムがあなたの想定するように動いていないから」じゃないかなぁ....



どういう「テキストファイル」に対してどのようなプログラムを実行して, あなたが期待するどのような結果に対して実際にはどうなったといっているのかな?
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報