- 締切済み
C言語 CSVからTXTへ書き込み
CSVファイルのデータを配列に格納してtest.txtに書き込みたいです。 その際、指定した列だけを書き込むのですが、うまくいきません。 a.txtの中身が a1,a2,a3,a4,a5 b1,b2,b3,b4,b5 c1,c2,c3,c4,c5 だとしたら、a1,a2,a3,a4,a5だけしか書き込めていません。 test.txtに書き込みたいのは、 a3 b3 c3 のようにしたいです。 初心者ですが、なかなかうまくいかないのでくやしいです。。。 お詳しい方、ご教授よろしくお願いします。 #define LINE_MAX 1024 #define ITEM_MAX 200 FILE *fp; char in_file[] = "a.txt"; char line[LINE_MAX]; char delmit[] = ",\n"; char item[ITEM_MAX][100]; char *item_p; int item_idx,ii; if((fp = fopen(fnamebuff, "r")) != NULL) { while(fgets(line, LINE_MAX, fp) != NULL) { if((item_p = strtok(line, delmit)) != NULL) { strcpy(&item[0][0], item_p); for(item_idx = 1; item_idx < ITEM_MAX; ++item_idx) { if((item_p = strtok(NULL, delmit)) != NULL) { strcpy(&item[item_idx][0], item_p); } else { item[item_idx][0] = '\0'; } } } FILE *fl; fl=fopen("test.txt","w"); for(ii=0;ii<200;ii++){ fprintf(fl," %s ", &item[ii][0]); } fclose(fl); fclose(fp); } }
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- AsarKingChang
- ベストアンサー率46% (3467/7474)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
補足
こんばんわ!ご回答ありがとうございます! 今度は配列に格納したデータに少し計算を加えてTXTファイルに出力したいのですが、 charからdoubleにatoiを使って変換し、計算をさせているのですが、ちゃんと出力されません。 元データは文字と数字が含まれています。 "a1,b1,c1,d1" "1,2,3,4" "5,6,7,8" "9,10,11,12" "13,14,15,16" こんな感じです。実際はもっと大きなデータです。 お時間があればご回答よろしくお願いします。 #include <stdio.h> #include <string.h> #define LINE_MAX 3250 #define ITEM_MAX 200 FILE *fp,*fl; char line[LINE_MAX]; char delmit[] = ",\n"; char item[28600][ITEM_MAX][100]; char *item_p; int i; int item_idx; int line_no; double t[28600],v[28600]; int main(){ line_no=0; if((fp = fopen("a.txt", "r")) != NULL) { while(fgets(line, LINE_MAX, fp) != NULL) { if((item_p = strtok(line, delmit)) != NULL) { strcpy(&item[line_no][0][0], item_p); for(item_idx = 1; item_idx < ITEM_MAX; ++item_idx) { if((item_p = strtok(NULL, delmit)) != NULL) { strcpy(&item[line_no][item_idx][0], item_p); }else{ item[line_no][item_idx][0] = '\0'; } } } line_no++; } } fl=fopen("test.txt","w"); for(i=0;i<line_no;i++) { t[i] = atoi(item[i+3][1])-atoi(item[i+2][1]); v[i] = atoi(&item[i+3][2])-atoi(&item[i+2][2]); fprintf(fl,"%s %s %d\n",&item[i][1],&item[i][2],v[i]/t[i]); } fclose(fl); fclose(fp); }