タイトルの通りですが,例えば
1 10.2
2 9.87
3 21.34
4 15.4
.
.
.
.
といったようなデータがあったとします.
そのときこの例で言えば2列目の要素だけを読み込んで配列に格納したい場合,
どのようにすればいいのでしょうか?
コンパイラはgccを使っています.
ファイルのデータを読み込んで配列に格納する方法
Re:ファイルのデータを読み込んで配列に格納する方法
gccを知らないので使えなかったらごめんなさい。
私はデータを読み込むときに、番号がついてるなら。
do{
fscanf(fp,"%d %f",a,deta);
}while(a!=serect);
hairetu[a]=deta;//[a]?自分で入れたいところに書き換えて…
みたいな感じでほしいデータがロードできるまでループさせてます。
目的以外の場所も読み込んでいるので、やりたいことと違ったら申し訳ないです。
gccがfscanfじゃなかったらもっとすいません。
私はデータを読み込むときに、番号がついてるなら。
do{
fscanf(fp,"%d %f",a,deta);
}while(a!=serect);
hairetu[a]=deta;//[a]?自分で入れたいところに書き換えて…
みたいな感じでほしいデータがロードできるまでループさせてます。
目的以外の場所も読み込んでいるので、やりたいことと違ったら申し訳ないです。
gccがfscanfじゃなかったらもっとすいません。
Re:ファイルのデータを読み込んで配列に格納する方法
あれミスったかもしれません。
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]」の間違いな気がします…

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:ファイルのデータを読み込んで配列に格納する方法
組込みとかでなければfscanfが使えない状況というのはまずあり得ないので...
double value;
fscanf(stream, "%*[0-9]%f", &value);
として読み込み、配列に格納するだけです。
ただし、間違ったデータの入力にも対応するには、もっと別の方法が必要になります。
double value;
fscanf(stream, "%*[0-9]%f", &value);
として読み込み、配列に格納するだけです。
ただし、間違ったデータの入力にも対応するには、もっと別の方法が必要になります。