C 将二维数字数组转换为字符

C 将二维数字数组转换为字符,c,arrays,char,maze,C,Arrays,Char,Maze,我正在做一个迷宫,使用深度优先搜索算法作为学校项目。迷宫工作得很好,但我有一个小问题。打印迷宫时,我必须使用#作为一面墙和作为路径,但我使用0作为墙和1作为路径,起初我认为以后很容易更改,但我错了。如何将0和1更改为#和 代码: #包括 #包括 #包括 void nahodne_suradnice(int*r,int*s,int-n) { srand(时间(空)); *r=((rand()%n)-1)+2; 如果(*r==1 | |*r==n) { *s=(rand()%n)+2; } 其他的

我正在做一个迷宫,使用深度优先搜索算法作为学校项目。迷宫工作得很好,但我有一个小问题。打印迷宫时,我必须使用
#
作为一面墙和
作为路径,但我使用
0
作为墙和
1
作为路径,起初我认为以后很容易更改,但我错了。如何将
0
1
更改为
#

代码:
#包括
#包括
#包括
void nahodne_suradnice(int*r,int*s,int-n)
{
srand(时间(空));
*r=((rand()%n)-1)+2;
如果(*r==1 | |*r==n)
{
*s=(rand()%n)+2;
}
其他的
{
如果(rand()%2==1)
*s=1;
其他的
*s=n;
}
}
int main()
{
inti,j,n,r,s,smer,posledny_-smer[1500];
int maze[500][500];
扫描频率(“%d”和“&n”);
如果(n<10 | | n>100)
{
返回0;
}
//vynulovanie pola/bludiska
对于(i=1;i=n | s==n | s==n | | s==1&(迷宫[r][s-1][s]=1 |迷宫[s]=1]
{
if(迷宫[r-1][s]==1 | |迷宫[r-2][s]==1)
继续;
迷宫[r-1][s]=1;
迷宫[r-2][s]=1;
r-=2;
posledny_-smer[j]=smer;
j++;
继续;
}
}
如果(smer==2)
{
如果(s+21)
{
如果(迷宫[r][s+1]==1 | |迷宫[r][s+2]==1)
继续;
迷宫[r][s+1]=1;
迷宫[r][s+2]=1;
s+=2;
posledny_-smer[j]=smer;
j++;
继续;
}
}
如果(smer==3)
{
如果(r+21)
{
如果(迷宫[r+1][s]==1 | |迷宫[r+2][s]==1)
继续;
迷宫[r+1][s]=1;
迷宫[r+2][s]=1;
r+=2;
posledny_-smer[j]=smer;
j++;
继续;
}
}
如果(smer==4)
{
如果(s-2>1&&r1)
{
如果(迷宫[r][s-1]==1 | |迷宫[r][s-2]==1)
继续;
迷宫[r][s-1]=1;
迷宫[r][s-2]=1;
s-=2;
posledny_-smer[j]=smer;
j++;
继续;
}
}
}
//布卢迪斯卡酒店
对于(i=1;i
`


谢谢。

将迷宫的定义更改为:

char maze[500][500]

并将所有引用更改为使用char而不是int。然后返回“#”和“.”而不是0和1。

打印时,可以将0和1更改为#和。(或任何其他表示形式)。例如,可以更改:

printf("%d", maze[i][j]);


如果您这样做,您可以更改要显示迷宫的字母,而无需更改代码的其他部分。

我的答案可能有点过于简化。仔细检查您的代码后,我发现在某一点上,您将值3指定给迷宫。我不确定这是什么原因,但您可能需要查看正在进行的操作在那里。我很难读代码,因为很多代码似乎是用外语写的。如果你写了代码(如你所说)替换字符对您来说应该没有问题,或者至少可以确定这样做的确切问题。但是,模糊的描述让我认为是其他人为您编写了代码,而您不知道它的作用。我认为我们不应该帮助您。
printf("%d", maze[i][j]);
switch(maze[i][j]) {
  case 0:
    printf("#");
    break;
  case 1:
    printf(".");
    break;
  default:
    printf("X"); /* in case you have some value other than 0 or 1 in the maze */
 }