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
***************************************************************************************************
お礼
回答ありがとうございます^^ > 読み取り専用で開いているならflockは不要です。 この言葉を聞いて安心しました(*'-')