#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;
}