以下プログラム
//プログラム
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
//定数
#define MAP_X 5
#define MAP_Y 5
//メイン関数
void main(void)
{
FILE *fp;
char *filename = "map.txt"; //アドレスにmap.txtを入れる?
char date[3+1]; //なぜ4じゃなく3+1と記述しているのか不明
int x,y,c; //x,yは出力用の変数。cはファイルから読み出した数値を入れている?
int keta_cnt=0;
int date_cnt=0;
int buff[MAP_X*MAP_Y+1]={0};
int Mapdate[MAP_Y][MAP_X]={0};
if((fp=fopen(filename,"r"))==NULL){ //map.txtファイルがなかったら警告を出して終了 "r"は読み込み(read)
printf("%s-Not Found\n",filename);
return ;
}
while((c=getc(fp))!=EOF){ //ファイルから一文字入力(getc)。fgetcでも可。fpがEOFではない間以下の処理を行う?
if(isdigit(c)){ //isdigit数字(0~9)なら真。
date[keta_cnt]=(char)c; //data[keta_cnt]の中にcの数値を文字型で入れる。
keta_cnt++;
}
else{ //そうでなければ
date[keta_cnt]='\0';
buff[date_cnt]=atoi(date); //文字列をint型に変換
keta_cnt=0;
keta_cnt++;
if(date_cnt >= MAP_X*MAP_Y) break;
}
}
fclose(fp); //fopenでオープンされたファイルをクローズする。正常なら0、エラーならEOFを返す
memcpy(Mapdate,buff,sizeof(Mapdate));
for(y=0;y<MAP_Y;y++){ //出力部分
for(x=0;x<MAP_X;x++){
printf("%d",Mapdate[y][x]);
}
printf("\n");
}
return ;
}
理解するために注釈文だらけです。どこかおかしいところでもあるのでしょうか・・・?