CSVファイル

CSVファイルを読み込んで、行と列を入換えて保存するプログラムです。

CSVファイルlist_23.c)
#include <stdio.h>

#define READMAX 100 // --> 最大100x100のCSVファイル読込み
#define CSVFILE "yumiko.csv" // --> 読込みファイル名
#define OUTFILE "output.csv" // --> 出力ファイル名

int main(int argc,char* argv[])
{
    FILE *fp;
    int l,w;
    int lengn,widthn;
    int csv_read[READMAX][READMAX];
    char fbuf[256];
    char seps[]=",",*token;// [,]文字による区切り-->CSVファイル
    
    memset(csv_read,0,sizeof(int)*READMAX*READMAX);
    /* ファイルからの読込み */
    lengn = widthn = 0;
    fp = fopen(CSVFILE,"r");
    while(fgets(fbuf,256,fp)){
        widthn=0;
        token = (char*)strtok(fbuf,seps);
        while(token!=NULL){ // buf にトークンがなくなるまで繰り返す
            sscanf(token,"%d",&csv_read[lengn][widthn]);
            token = (char*)strtok(NULL,seps); // 次のトークンを取得
            widthn++; // 横の数+1
        }
        lengn ++;// 縦の数+1
    }
    fclose(fp);
    
    printf("leng = %d\n",lengn);
    printf("width= %d\n",widthn);
    /* 行・列を反転して出力 */
    fp = fopen(OUTFILE,"w+");
    for(w=0;w<widthn;w++){
        for(l=0;l<lengn;l++){
            fprintf(fp,"%d",csv_read[l][w]);
            if(l!=lengn-1) fprintf(fp,",");
        }
        fprintf(fp,"\n");
    }
    fclose(fp);
    
    return 0;
}
実行結果
Gami[1255]% ./csv_read.exe
leng = 10
width= 5
Gami[1256]%
inserted by FC2 system