C言語でテキストファイルからデータの読み込みを行っています.
既成のシステムであるステレオカメラからフレーム毎のデータが以下のようにテキストファイルに出力されます(実際はもっとたくさんの種類のデータを含みます).
frame_number blinking eye_x eye_y eye_z head_x head_y head_z
1 no 0.3 0.2 0.8 1.2 0.8 0.5
2 no 0.2 0.4 0.5 1.3 0.8 0.4
3 no 0.3 0.5 0.7 1.4 0.7 0.6
4 no 0.4 0.4 0.9 1.3 0.8 0.4
5 yes 0.5 0.4 0.2 1.2 0.9 0.3
6 no 0.7 0.3 0.2 1.1 0.5 0.4
7 no 0.8 0.6 0.4 1.5 0.6 0.6
・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・
100 no 0.7 0.3 0.2 1.1 0.5 0.4
そこでファイル読み込みの際に現在では、すべてのデータにblinking[100],eye_x[100],...,head_z[100],...のような配列を作り、各データ毎に読み込んでいます.
for (i=0;i;100;i++)
{
・・・・・・・・・・・・・・
fscanf( fp, "%s", &blinking[i]);
fscanf( fp, "%f", &eye_x[i]);
・・・・・・・・・・・・・・
fscanf( fp, "%f", &head_x[i]);
・・・・・・・・・・・・・・
}
しかし、実際に使用したいデータがeye_xのみの場合、すべて読み込んでいては非効率的ではないと考えています。そこで必要なデータのみ(例えばeye_xの列のみ)読み込んで、他の列はスキップできるようなプログラムに変えたいと思うのですがどのようにしたらよろしいですか?
ちなみにテキストファイルを出力するプログラムはありません.
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
fgetsなどで1行読み込んで sscanfでダミーと必要な変数でいい思います
char lbuf[256], dummy_dtr[64];
int dummy_int;
for ( i = 0; i < 100; i++ ) {
fgets( lbuf, sizeof( lbuf ), fp );
sscanf( lbuf, "%d %s %f", &dummy_int, dummy_str, &eye_x[i] );
}
といった具合で ・・・
No.2
- 回答日時:
意外と知られていないのですが, scanf 系は書式文字列で「*」を使うと「読み込むけど結果は捨てる」という処理ができます. だから
fscanf(fp, "%*d%*s%lf%*lf%*lf%*lf%*lf%*lf", &eye_x[i]);
のようにすればダミーの変数も不要. %*lf の数はあってるかなぁ.
ああ, lf か f かは実際の引数に合わせてくださいね.
No.3
- 回答日時:
#include <stdio.h>
int main(void)
{
FILE *fp = fopen("data.txt", "r");
double ex;
if(!fp) return 1;
while(fscanf(fp, "%*d %*[^ ] %lf %*[^\n]%*c", &ex) != EOF) printf("%f\n" ,ex);
fclose(fp);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー C2664
-
C言語でクロマキー合成をする方法
-
エラーがわかりません、、
-
ファイル結合
-
c言語でのfscanfについて
-
ファイルへの書込み処理が異常...
-
CRC32の計算方法
-
[C言語]2つのファイルを用いた...
-
Cプログラムの問題
-
a*(1-exp(-bx))+cの近似の方法
-
ファイル出力で改行を入れたい!
-
ガンマ変換 C言語でプログラ...
-
fopenでファイル名に、変数を使...
-
C言語 初心者です。
-
2÷3などの余りについて
-
信頼区間の1.96や1.65ってどこ...
-
C言語での引数の省略方法
-
ある商品のロス率を5%見込み、...
-
「Aに対するBの割合」と「Aに対...
-
マイナスからプラスへ転じた時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語でのfscanfについて
-
ファイルへの書込み処理が異常...
-
C言語でファイル読み書きを早く...
-
エラーがわかりません、、
-
日本語ファイル名のFTPについて
-
fopenでファイル名に、変数を使...
-
ファイル出力で改行を入れたい!
-
テキストファイル内に対して, ...
-
複数ファイルの同時読み込みの...
-
C言語の課題です
-
C言語を用いて、csvファイル内...
-
バイナリファイルの読み込み(C...
-
C言語にてXMLファイルから任意...
-
ファイルが読み込めない・・・
-
構造体のメンバにファイルポイ...
-
CRC32の計算方法
-
ファイルからCR/LFを除去したい
-
C言語におけるファイル読み込み...
-
C言語 csv 配列
-
エラー C2664
おすすめ情報