アットウィキロゴ
 
/***
*プログラムの使い方
*readFile()のfp = fopen( "Book1.csv", "r" );
*で読込ファイルを、
*writeFile()のfile = fopen("test.txt","w");
*で書込ファイルを指定しています。
*
*/
 
#include <stdio.h>
#include <stdlib.h>
 
//DATA[gyou][retsu]の行数を指定します
#define gyou 5;
//DATA[gyou][retsu]の列数を指定します
#define retsu 10;
 
//ファイルの読み込み内容 [行][列]
double DATA[gyou][retsu];
//ファイルの書き込み内容 [要素数] ※要素数は、上の配列の行*列
double sortedArray[gyou*retsu];
 
/**
* ファイルを読む
*/
int readFile(){
	FILE *fp;
	char c,data[256];
	int i,j,k;
 
	for(i = 0;i < 5;i++)
	{
		for(j = 0;j < 10;j++)
			DATA[i][j] = 0;
	}
 
	//ここで読込ファイル名を指定します
	fp = fopen( "Book1.csv", "r" );  /* 読み込みモードでオープン */
	if( fp == NULL )
	{
		puts( "ファイルが開けません" );
		return 1;
	}
 
	i = 0;
	j = 0;
	k = 0;
	while(1)
	{
		c = fgetc( fp );      /* 1文字読み込み */
		if( feof( fp ) )	break;
		if(c == ',')
		{
			data[k] = '\0';
			DATA[i][j] = atof(data);
			j++;
			k = 0;
		}
		else if(c == '\n')//ここで、区切りの文字を指定します。
		{
			data[k] = '\0';
			DATA[i][j] = atof(data);
			i++;
			j = 0;
			k = 0;
		}
		else
		{
			data[k] = c;
			k++;
		}
 
	}
	fclose( fp );
 
	for(i = 0;i < 5;i++)
	{
		for(j = 0;j < 10;j++)
			printf("%.1f\t",DATA[i][j]);
		printf("\n");
	}
	return 0;
}
 
/**
* sortedArray[]をスペース区切りで
ファイルに書き込みます。
*/
int writeFile(){
	int i = 0;
 
	FILE *file;
//ここで書込ファイル名を指定します
	file = fopen("test.txt","w");
 
	for(i=0;i<gyou*retsu;i++){
		fprintf(file,"%f ",sortedArray[i]);
	}
	fclose(file);
	return 0;
}
 
/**
* 配列をバブルソートします。
*/
int sortArray(){
	//DATA[][]の値をsortedArray[]に挿入します
	int i, j, k;
	for(i=0 ;i < gyou; i++){
		for(j=0; j< retsu; j++){
			sortedArray[k] = DATA[i][j];
		}
	}
 
	return 0;
}
 
 
int main(void){
	readFile();
	sortArray();
 
	return 0;
}
 
最終更新:2007年10月20日 18:14