在一个小项目上工作,我试图制作一个二维字符数组我以前用过ints,并试图摆脱那个例子,但似乎遇到了一个我不明白的问题。
我就是这么做的:
adjMatrix = (char **) malloc(sizeof(char *) * dimensions);
for (int i = 0; i < dimensions; i++)
adjMatrix[i] = (char *) malloc(sizeof(char) * (dimensions + 2));
for (int i = 0; i < dimensions; i++)
for (int j = 0; j < (dimensions + 2); j++)
adjMatrix[i][j] = '0';
以下是我的显示功能:
for (int i = 0; i < dimensions; i++)
{
for (int j = 0; j < (dimensions + 2); j++)
printf("%s ", &(adjMatrix[i][j]));
printf("\n");
}
这是我的输出
000000 00000 0000 000 00 0
000000 00000 0000 000 00 0
000000 00000 0000 000 00 0
000000 00000 0000 000 00 0
有谁能告诉我为什么它会这样显示,并给出任何建议,如何使它只是一个单一的“0”在每个插槽?
最佳答案
有谁能告诉我为什么它会这样显示,并给出任何建议,如何使它只是一个单一的“0”在每个插槽?
这是因为你建议打印一个字符串而不是一个字符。
将代码更改为:
printf("%c ", adjMatrix[i][j]);
注意,
adjMatrix[i]
指向单个字符数组,字符数组是字符串。此外,这是未定义的行为,因为您没有0终止“字符串”。&adjMatrix[i][0]
是指向'0' '0' '0' '0' '0' '0'
的指针,&adjMatrix[i][1]
是指向'0' '0' '0' '0' '0'
的指针,&adjMatrix[i][2]
是指向'0' '0' '0' '0'
的指针,…
关于c - 在C中分配2D char Matrix的奇数输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52800511/