69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <malloc.h>
int *getMapInfo()
{
char ch;
int line = 0, row, maxRow = 0;
int *mapInfo = (int *)malloc(sizeof(int)*2);
FILE *fp;
fp = fopen("maze.map", "rb");
if(fp == NULL)
{
printf("cannot open file!\n");
return NULL;
}
while(!feof(fp))
{
ch = fgetc(fp);
++row;
if(ch == 13 || ch == -1)
{
++line;
if(row > maxRow)
maxRow = row;
row = 0;
}
}
fclose(fp);
maxRow -= 2;
mapInfo[0] = line;
mapInfo[1] = maxRow;
return mapInfo;
}
char **getMap(int *mapInfo)
{
char **map, ch;
int i, j;
FILE *fp;
fp = fopen("maze.map", "rb");
if(fp == NULL)
{
printf("cannot open file!\n");
return NULL;
}
map = (char**)malloc(sizeof(char*)*mapInfo[0]);
for(i=0; i<mapInfo[0]; ++i)
*(map+i) = (char*)malloc(sizeof(char)*mapInfo[1]);
i = 0;
j = 0;
while(!feof(fp))
{
ch = fgetc(fp);
if(ch == 13)
{
ch = fgetc(fp);
while(j != 0 && j != mapInfo[1])
{
map[i][j++] = ' ';
if(j == mapInfo[i])
{
++i;
j = 0;
}
}
}
else
map[i][j++] = ch;
if(j == mapInfo[1])
{
++i;
if(i == 13)
break;
j = 0;
}
}
fclose(fp);
return map;
}
int main()
{
char **map;
int *mapInfo;
int i, j;
mapInfo = getMapInfo();//mapInfo[0]存行,mapInfo[1]存列
map = getMap(mapInfo);
for(i=0; i<mapInfo[0]; ++i)
{
for(j=0; j<mapInfo[1]; ++j)
{
printf("%c", map[i][j]);
}
printf("\n");
}
return 0;
}