ページ 11

ファイルのデータを読み込んで配列に格納する方法

Posted: 2010年8月30日(月) 15:55
by 774
タイトルの通りですが,例えば

1 10.2
2 9.87
3 21.34
4 15.4
.
.
.
.

といったようなデータがあったとします.

そのときこの例で言えば2列目の要素だけを読み込んで配列に格納したい場合,
どのようにすればいいのでしょうか?

コンパイラはgccを使っています.

Re:ファイルのデータを読み込んで配列に格納する方法

Posted: 2010年8月30日(月) 16:15
by パコネコ
gccを知らないので使えなかったらごめんなさい。
私はデータを読み込むときに、番号がついてるなら。
do{
fscanf(fp,"%d %f",a,deta);
}while(a!=serect);
hairetu[a]=deta;//[a]?自分で入れたいところに書き換えて…
みたいな感じでほしいデータがロードできるまでループさせてます。

目的以外の場所も読み込んでいるので、やりたいことと違ったら申し訳ないです。
gccがfscanfじゃなかったらもっとすいません。

Re:ファイルのデータを読み込んで配列に格納する方法

Posted: 2010年8月30日(月) 16:22
by シエル
2列目でいいんですか?2行目の間違いではなくて?

Re:ファイルのデータを読み込んで配列に格納する方法

Posted: 2010年8月30日(月) 16:30
by パコネコ
あれミスったかもしれません。
2列目をって書いてますね。
間違いの可能性もありますが…あってる可能性も高いので。
do{
fscanf(fp,"%d",a);
if(a!=100)
//[a]を[a-1]にしたりすることも…
fscanf(fp,"%f",hairetu[a]);
}while(a!=100);
//ファイルの終わりに100と、書いておく必要があります。
aは使い捨てで読み捨ててます。

fscanfが使えなければ結局無駄ですが…
これではだめでしょうか…
=============
すいません…「&a」および「&hairetu[a]」の間違いな気がします…


画像

Re:ファイルのデータを読み込んで配列に格納する方法

Posted: 2010年8月30日(月) 16:51
by たかぎ
組込みとかでなければfscanfが使えない状況というのはまずあり得ないので...

double value;
fscanf(stream, "%*[0-9]%f", &value);

として読み込み、配列に格納するだけです。
ただし、間違ったデータの入力にも対応するには、もっと別の方法が必要になります。