Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C字符数组代替指定字符打印数字_C_Arrays_Maze - Fatal编程技术网

用C字符数组代替指定字符打印数字

用C字符数组代替指定字符打印数字,c,arrays,maze,C,Arrays,Maze,我正在做一项任务,解决一个由2d字符数组创建的迷宫。为了测试这个程序,我制作了一个简单的4x4迷宫。但是,当打印到屏幕上时,迷宫是由数字组成的。我很困惑这是怎么发生的。任何帮助都将不胜感激 任务如下: char *maze[4][4]; for (int i=0; i < 4; ++i) { maze[0][i] = "#"; maze[3][i] = "#"; maze[1][i] = "."; } maze[2][0] = "#"; maze[2][3] = "

我正在做一项任务,解决一个由2d字符数组创建的迷宫。为了测试这个程序,我制作了一个简单的4x4迷宫。但是,当打印到屏幕上时,迷宫是由数字组成的。我很困惑这是怎么发生的。任何帮助都将不胜感激

任务如下:

char *maze[4][4];
for (int i=0; i < 4; ++i)
{
    maze[0][i] = "#";
    maze[3][i] = "#";
    maze[1][i] = ".";
}
maze[2][0] = "#";
maze[2][3] = "#";
maze[2][1] = ".";
maze[2][2] = ".";
但它却打印:

0000
2222
0220
0000
应该是

maze[0][i] = '#';
char*maze[4][4]
应该是
字符迷宫[4][4]

“#”
是字符串文字,请使用
“#”
获得字符常量


如果确实要使用一个字符的字符串文字,则必须在原始程序中使用
%s
转换规范,而不是
%c

问题在于这一行

printf("%c",maze[i][j]);
您使用的不是字符,而是字符指针(又名字符串),因此应该是这样的:

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

或者您也可以使用其他答案中描述的字符。

printf
调用中存在类型不匹配。您正在将
maze[i][j]
打印为字符(
%c
)。我建议打开编译器警告来捕捉这些类型的错误;gcc在我试图编译您的代码时发现了这个问题

它打印数字而不是字符的原因是
printf
将字符串
maze[i][j]
的地址解释为ASCII码点并打印相应的字符。对于编译器来说,
“#”
的地址恰好会导致打印字符
0
2
。我的情况不同;当我编译代码时,程序打印了EOT和ACK

最好的解决方案是将
maze
声明为
char
s数组,而不是字符串

char maze[4][4] = {
  { '#', '#', '#', '#' },
  { '.', '.', '.', '.' },
  { '#', '.', '.', '#' },
  { '#', '#', '#', '#' }
};

请在
printf
文档中查找
“%c”
的含义。欢迎来到Stack Overflow,谢谢您的提问!请阅读简短的介绍。它提到了;例如,有关格式的帮助可以在上找到。非常感谢大家。这有助于我的工作,迷宫现在正在正确打印。再次非常感谢您,现在开始下一步:
char*maze[4][4]
不是二维字符数组,而是指向
char
的二维指针数组
maze
是我在编辑过程中与你的评论同时编辑的一个字符数组
printf("%c",maze[i][j]);
printf("%s",maze[i][j]);
char maze[4][4] = {
  { '#', '#', '#', '#' },
  { '.', '.', '.', '.' },
  { '#', '.', '.', '#' },
  { '#', '#', '#', '#' }
};