CSVのファイルを・・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たまー

CSVのファイルを・・・・

#1

投稿記事 by たまー » 18年前

CSVのファイルの中に整数のデータが
横に7個"," が整数の間にあります。(CSVなので当たり前なのかも><)
その整数を構造体A B C D E に 順番にいれていくとしたら、
どういった形になりますでしょうか?
よろしくお願いします。

miyaza

Re:CSVのファイルを・・・・

#2

投稿記事 by miyaza » 18年前

>構造体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;
}

結構おおざっぱに作ってありますが動くと思います。

miyaza

Re:CSVのファイルを・・・・

#3

投稿記事 by miyaza » 18年前

すみません
>if(argc>2) return -1;
if(argc<1) return -1です。

たまー

Re:CSVのファイルを・・・・

#4

投稿記事 by たまー » 18年前

miyazaさん早い回答ありがとうございます><
思った感じでできております^^
やっぱりそのやり方がいいんですね~^^
すごく参考になりあmした^^

閉鎖

“C言語何でも質問掲示板” へ戻る