【CSVファイルから読みこんだ文字列の比較】

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kob

【CSVファイルから読みこんだ文字列の比較】

#1

投稿記事 by kob » 5ヶ月前

CSVファイルから、fscanf関数で読みこんだ文字列が特定文字列である際に条件分岐したいのですができません。
お詳しい方いらっしゃいましたらお教えいただきたく投稿いたします。
具体的に書きますと、文字列の読み取りを
fscanf(fp, "%[^,],", s1);
で行い、s1が「DEF」である際に別変数cnt(整数型)をインクリメントしたいと考えています。
以下にソースを書きます。
(補足となりますが、条件判断によってCSVファイルの1列目が特定文字列の際に2列目の読込を特定指定子で読みこめればその他応用例でも構いません。ですが、実際にはCSVファイルが100行程度あるのでそのような仕様でもソースを短く済ませられるようにしたいと考えています.)
よろしくお願いします。

コード:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ( void ) {	
	if ((fp = fopen("Input.csv", "r")) != NULL) {
		char s1[128];	int i = 0; double dtrsh; int integer;
		char s2[128], s3[128];
		sprintf(s2, "DEF");
		for (int cnt=0 ; ; cnt++ ) {
			fscanf(fp, "%[^,], ", s1);
			if (s1 == s2) { 
				fscanf(fp, "%d\n", &integer); i += 1; }			
			else { fscanf(fp, "%lfn", &dtrsh); }
			if (i == 1 || cnt > 19) { break; }		}}
	else { printf (" U cannot open the file !\n"); exit ( EXIT_FAILURE ); }
	fclose(fp);
	return 0;
}
ただし、Input.csvは以下の通り

コード:

ABC, 10.4
DEF, 6.2
GHI, 3.1
JKL, 2.1

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

Re: 【CSVファイルから読みこんだ文字列の比較】

#2

投稿記事 by みけCAT » 5ヶ月前

s1 == s2は文字列の比較ではなく、(配列から変換された)ポインタの比較です。
C言語で文字列を比較するには、strcmp関数を用いるといいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

kob

Re: 【CSVファイルから読みこんだ文字列の比較】

#3

投稿記事 by kob » 5ヶ月前

みけCATさん、さっそくご回答いただきありがとうございます。

strcmp関数を使って条件分岐することができました。
非常に助かりました。
ありがとうございました。

返信

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