csvファイルの読み込み
fscanf関数を用いて、csvファイルの内容を構造体のそれぞれのメンバに読み込んで表示させようとしているのですが、4列目以降が上手く読み込めません。初歩的な質問で申し訳ありませんがどなたか教えてください。
****************************ソース************************************************
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 64
#define FILE_NAME "view_001_McdlData.csv"
#define FILE_SIZE 819200
struct Data{
int DataNo;
int FrameNo;
int SampleNo;
char Digital;
double voltage;
double trigger;
double C;
double D;
};
int main(int argc, char *argv[]) {
FILE* fp,*fo, *fi; // ファイルポインタ用
int n, i, file_size;
double time,vel[FILE_SIZE];
struct Data *dat;
char buff[SIZE];
if ((fp = fopen(FILE_NAME,"r")) == NULL) {
printf( "file open error\n" );
exit(EXIT_FAILURE);
}
fseek(fp, 0, SEEK_END);
file_size = ftell(fp);
dat = (struct Data*)malloc(file_size);
printf("malloc address= %p, file size= %d\n", dat, file_size);
fseek(fp, 0, SEEK_SET);
i = 0;
//データの読み込み
while((fscanf(fp, "%d,%d,%d,%s,%lf,%lf,%lf,%lf",&dat[i].DataNo,&dat[i].FrameNo,&dat[i].SampleNo,&dat[i].Digital,&dat[i].voltage,&dat[i].trigger,&dat[i].C,&dat[i].D)) !=EOF ){
printf("%d %d %d %s %lf %lf %lf %lf\n",dat[i].DataNo,dat[i].FrameNo,dat[i].SampleNo,dat[i].Digital,dat[i].voltage,dat[i].trigger,dat[i].C,dat[i].D);
i++;
}
fclose(fp);
return 0;
}
***********************************csvファイルの内容************************************
0,1,0,0x3F,2.270000,0.000000,-1.000000,-1.000000
1,1,1,0x3F,2.260000,0.010000,-1.000000,-1.000000
2,1,2,0x3F,2.260000,0.010000,-1.000000,-1.000000
3,1,3,0x3F,2.260000,0.010000,-1.000000,-1.000000
4,1,4,0x3F,2.260000,0.010000,-1.000000,-1.000000
5,1,5,0x3F,2.260000,0.000000,-1.000000,-1.000000
***************************************************************************************************
お礼
ありがとうございました。 お蔭様で動きました。 3) 書式指定を "%[^,],%lf,%lf" にする。 の方法でクリアしました、Sのかわりの[^,]はどう言うことですか。 素人にはさっぱりわかりません。 どこで調べればいいのか? 大変助かりました。