アプリ版:「スタンプのみでお礼する」機能のリリースについて

■C言語■
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);
}
}

A 回答 (1件)

// 変数を追加


int line_idx = 0;

// item へのコピー時に line_idx を指定
strcpy(&item[item_idx][line_idx], item_p);

// 一行を読み終わったら、line_idx を +1
item[item_idx][line_idx] = '\0';
line_idx++;

// 出力は、第3列のみを line_idx 行分
for(i=0; i<line_idx; i++) fprintf(fl,"%s\n", &item[2][i]);

// 全体の処理順序は以下がオススメ
fp = fopen()
while ( 読み込み(fp) ) { 処理 }
fclose(fp)
fl=fopen()
書き込み(fl)
fclose(fl)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!