ページ 1 / 1
CSVのファイルを・・・・
Posted: 2007年11月06日(火) 18:56
by たまー
CSVのファイルの中に整数のデータが
横に7個"," が整数の間にあります。(CSVなので当たり前なのかも><)
その整数を構造体A B C D E に 順番にいれていくとしたら、
どういった形になりますでしょうか?
よろしくお願いします。
Re:CSVのファイルを・・・・
Posted: 2007年11月06日(火) 20:55
by miyaza
>構造体A B C D E に 順番にいれていくとしたら
整数を入れることができるメンバを持った構造体を7個使うという意味ですよね?
csvといってもその実態はテキストファイルなので
fopen()で開いてfscanf()やfgets()などで読み込んでやればいいと思います。
例えば、以下のソースはfgets()で一行分読み込んでstrtok()でトークン分解しそれをatoi()でint型に変換して
構造体に入れたものです。
7個の整数をcsvから読み取る前提で作ってあります。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct DATA{
int num;
}DATA;
#define CON 7
#define CS ","
int main(int argc,char *argv[/url]){
DATA data[CON];
FILE *fp;
char str[512], *ist;
int i;
if(argc>2) return -1;
fp=fopen(argv[1],"r");
if(!fp) exit(1);
if(fgets(str,sizeof(str),fp)==NULL) exit(1);
for(i=0;i<CON;i++){
if(i==0) ist=strtok(str,CS);
else ist=strtok(NULL,CS);
if(ist==NULL) exit(1);
data.num=atoi(ist);
}
for(i=0;i<CON;i++) printf("data[%d].num=%d\n",i,data.num);
fclose(fp);
return 0;
}
結構おおざっぱに作ってありますが動くと思います。
Re:CSVのファイルを・・・・
Posted: 2007年11月06日(火) 21:01
by miyaza
すみません
>if(argc>2) return -1;
if(argc<1) return -1です。
Re:CSVのファイルを・・・・
Posted: 2007年11月07日(水) 02:47
by たまー
miyazaさん早い回答ありがとうございます><
思った感じでできております^^
やっぱりそのやり方がいいんですね~^^
すごく参考になりあmした^^