C言語でfscanf関数を使用してCSVファイルを読み込みCSVファイルの各項目を構造体へ格納する処理がうまくいきません。
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char sStr0[9]; char sStr1[3]; char sStr2[4]; char sStr3[4]; char sStr4[3]; }stTest ; void main(){ stTest kTest[3] ; int iLp; char fname[] = ".\test.csv" ; FILE *fp ; fp = fopen( fname, "r" ) ; if( fp == NULL ){ printf( "File Open Error \n"); return ; } memset(&kTest, 0x00, sizeof(kTest)); for( iLp = 0; iLp < 3 ; iLp ++ ){ //カンマ区切りのデータを構造体に格納する。 fscanf( fp, "%[^,],%[^,],%[^,],%[^,],%[^,]", kTest[iLp].sStr0, kTest[iLp].sStr1, kTest[iLp].sStr2, kTest[iLp].sStr3, kTest[iLp].sStr4 ); fgetc(fp) ; printf( "sStr0[%s] sStr1[%s] sStr2[%s] sStr3[%s] sStr4[%s]\n", kTest[iLp].sStr0, kTest[iLp].sStr1, kTest[iLp].sStr2, kTest[iLp].sStr3, kTest[iLp].sStr4 ); } return ; }
tesy.csv
20170901,6J ,AAA,XXX,51 20170901,6J ,BBB,YYY,53 20170901,6J ,CCC,ZZZ,55
上記プログラムを実行すると下記のような結果となります。
sStr0[20170901] sStr1[6J AAA] sStr2[AAA] sStr3[XXX] sStr4[51] sStr0[20170901] sStr1[6J BBB] sStr2[BBB] sStr3[YYY] sStr4[53] sStr0[20170901] sStr1[6J CCC] sStr2[CCC] sStr3[ZZZ] sStr4[55]
sStr1には[6J]が入るようにしたいのですが、どのようにすれば正しく読み込めますでしょうか。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/10 01:54