[C语言]给一个二维字符数组赋值的问题
我一开始是想写一个下五子棋的程序,打算用一个字符二维数组构造棋盘:
#include <stdio.h> char a[10][10]; void p(char a[10][10]); int main(void) { int i, j; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) a[i][j] = "O"; } p(a); return 0; } void p(char a[10][10]) { for (int j = 0; j < 10; j++) printf("%s ", a[j]); }期待输出:
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
实际输出:
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOO
为什么? 因为没有‘ ’作为字符串结束标志。
把上面代码中的a[10][10]改为a[10][11],就正常了。多留一位,会自动补上‘ ’
也可以直接赋值: 正确的:a[10][12] = {"00000000000 ","00000000000 ",
"00000000000 ", "00000000000 ", "00000000000 ",
"00000000000 ", "00000000000 ", "00000000000 ",
"00000000000 ", "00000000000 "};
注意:不能用a[10][11]!
错误的:
a[10][11] = {"00000000000","00000000000",
"00000000000", "00000000000", "00000000000",
"00000000000", "00000000000", "00000000000",
"00000000000", "00000000000"};
至于为什么不加‘ ’,输出结果会是那样,我还没有想好。。。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C语言中二维字符数组的定义和初始化
- 下一篇: 为二维字符数组赋值