[ create a new paste ] login | about

Link: http://codepad.org/P8kxOU27    [ raw code | output | fork ]

C, pasted on Nov 25:
#include <stdio.h>
#include <stdlib.h>

int main()
{ 
	FILE *fp;
	char *fname ="test.txt";
	int c;
	double** matrix;
	int size_x, size_y; /* size_x 行 size_y 列 */
	int i,j;
	// 表示がないと1週間後には起動時の入力待ちとかワケワカメ
	printf("input X Y >");
	scanf("%d%d", &size_x, &size_y);
	fp = fopen( fname, "r" );
	if( fp == NULL ){
		printf( "%sファイルが開けません\n", fname );
		return -1;
	}
	//while( (c = fgetc( fp )) != EOF ){
	// printf( "%c", c ); }
	/* 左辺と = で 3. の青い矢印を生成*/
	matrix = (double**)malloc(sizeof(double*)*size_x);
	if (matrix==NULL) exit(1); /* 正常にmallocできたかどうかのチェック*/

	/* このループで 4. 以降の処理 */
	for (i=0 ; i < size_x ; i++) {
		matrix[i] = (double*)malloc(sizeof(double)*size_y);
		if (matrix[i]==NULL) exit(1);
	}
	i = j = 0;
	while( (c = fgetc( fp )) != EOF ){
		// テキストモード("r")の場合は\r\nでも'\n'だけでおk
		if('\n' == c){
			// インデックスは全走査し、格納制限は別で行う。
			i = 0;
			j++;
			continue;
		}
		// これ以上の読み込みは不要
		// 3x3で"1 9"とか入力されても面倒なので知りません
		if(j >= size_y){
			break;
		}
		// 制限範囲内のみ格納
		if(i < size_x){
			matrix[i][j]=c;
			//printf("%c ", c);
		}
		// とりあえず加算。制限は別。
		i++;
	}
	for (j=0 ; j < size_y ; j++) {
		for (i=0 ; i < size_x ; i++) {
			printf("%c ",(int)matrix[i][j]);
		}
		printf("\n");
	}
	for (i=0 ; i < size_x ; i++) {
		free(matrix[i]); 
	}
	free(matrix);
	// exitするなら後ろいらない
	// exit(0);
	fclose(fp);
	return 0;
}


Output:
1
2
3
input X Y >test.txtファイルが開けません

Exited: ExitFailure 255


Create a new paste based on this one


Comments: