CSVファイルからのfscanf_sでの読み込み

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Swarm
記事: 3
登録日時: 9年前

CSVファイルからのfscanf_sでの読み込み

#1

投稿記事 by Swarm » 9年前

CSVファイルからパラメータを読んで,その値に基づいて計算を行わせようとしています.
以下のプログラムでパラメータセットを読み込めています.

コード:

	if(error = fopen_s(&param, p_fname, "r") != 0){
		printf("%sファイルが開けません\n", p_fname);
		return -1;
	}
	//parameterファイルの読み込み
	fscanf_s(param, "%[^,],%d", param_name1, _countof(param_name1), &a);
	fscanf_s(param, "%[^,],%d", param_name2, _countof(param_name2), &b);
	fscanf_s(param, "%[^,],%d", param_name3, _countof(param_name3), &c);
	fscanf_s(param, "%[^,],%d", param_name4, _countof(param_name4), &d);
	fclose(param);
追加で,別のCSVファイルからも値を読みこむ必要があり,以下のプログラムを試したところ読み込めていません.
ちなみにCSVファイルには「0.1, 0.2, 0.3, 0.4」が入っています.
(実際には1000行×4列のデータ)

コード:

	sprintf_s(str, 100, "SwarmInput_%d.csv", gen);
	if (error = fopen_s(&swarminput, str, "r") != 0) {
		printf("%sファイルが開けません\n", str);
		return -1;
	}
	fscanf_s(swarminput, "%[^,],%d,%lf,%lf,%lf,%lf", str, _countof(str), &gen, &input[0][0], &input[0][1], &input[0][2], &input[0][3]);
CSVファイルは開いていますが,データの読み込みができておらず,
gen=0,input[0][0]=0,input[0][1]=0,input[0][2]=0,input[0][3]=0になっています.

助言頂ければ幸いです.

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: CSVファイルからのfscanf_sでの読み込み

#2

投稿記事 by みけCAT » 9年前

どうして4列のデータなのに6列読み込もうとしている感じのプログラムになっているのですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Swarm
記事: 3
登録日時: 9年前

Re: CSVファイルからのfscanf_sでの読み込み

#3

投稿記事 by Swarm » 9年前

大変申し訳ありません.
間違いがあったので訂正致します.
○:「1, 0.1, 0.2, 0.3, 0.4」
×:「0.1, 0.2, 0.3, 0.4」

inputのCSVファイルの1列目を消して「0.1, 0.2, 0.3, 0.4」のみにして以下のプログラムに修正しました.

コード:

	fscanf_s(swarminput, "%[^,],%lf,%lf,%lf,%lf", str, _countof(str), &input[0][0], &input[0][1], &input[0][2], &input[0][3]);
	X = input[0][0];
	Y = input[0][1];
	Z = input[0][2];
	N = input[0][3];
	fclose(swarminput);
<結果>
X=0.2, Y=0.3, Z=0.4, N=0

1列目を読まずに2列目から読み込んでいるようです.

Swarm
記事: 3
登録日時: 9年前

Re: CSVファイルからのfscanf_sでの読み込み

#4

投稿記事 by Swarm » 9年前

コード:

	fscanf_s(swarminput, "%lf,%lf,%lf,%lf", &input[0][0], &input[0][1], &input[0][2], &input[0][3]);
ご回答の意味を理解致しました.
上記の引数に修正して目的の数値を得ることができました.
有難う御座いました!!!

閉鎖

“C言語何でも質問掲示板” へ戻る