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