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

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 【CSVファイルから読みこんだ文字列の比較】

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

#3

by kob » 4年前

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

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

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

#2

by みけCAT » 4年前

s1 == s2は文字列の比較ではなく、(配列から変換された)ポインタの比較です。
C言語で文字列を比較するには、strcmp関数を用いるといいでしょう。

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

#1

by kob » 4年前

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

ページトップ