作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想创建一个包含“包含单个字符的数组”的数组。所以我写道:
#include <stdio.h>
int main(){
char *field[20][20];
for(int i=0;i<20;i++){ //makes blank 2d field with spaces only
for(int j=0;j<20;j++){
field[i][j]=" ";
}
}
//debug field visualisation
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
printf("%c",field[i][j]);
}
printf("\n");
}
return 1;
}
但奇怪的是,我得到“D”而不是“”作为每个字段元素的输出:
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
这是为什么呢?我想也许是因为如果出现一些奇怪的选角问题或者因为指针,我就迷路了。谢谢!
最佳答案
char *field[20][20];
这是一个指向 char(也称为字符串)的指针的二维数组,而不是字符的二维数组。
printf("%c",field[i][j]);
这会导致未定义的行为,因为您使用 %c
来打印字符串,如 I'我们说过 field[i][j]
是 char *
类型,而不是 char
类型。请打开编译器警告并且不要忽略它们。您的编译器应该已标记此错误。
一旦将代码更改为二维字符数组,一切都应该正常工作:
char field[20][20];
// ...
field[i][j] = ' ';
// ^
// notice we assign char and not string
关于c - 如何在二维字符数组中存储单个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59735058/
我是一名优秀的程序员,十分优秀!