【发布时间】:2018-07-14 14:01:27
【问题描述】:
我的代码是:
char array[5];
array[0] = 'F';
array[1] = '5';
array[2] = ' ';
array[3] = 'D';
array[4] = '3';
printf("%s", array);
printf("\n");
char aa[2][2];
char aaa[2];
aa[0][0] = array[0];
aa[0][1] = array[1];
aa[1][0] = array[3];
aa[1][1] = array[4];
aaa[0] = array[0];
aaa[1] = array[1];
printf("aa[0] %s\n", aa[0]);
printf("aa[0][0] %c\n", aa[0][0]);
printf("aa[0][1] %c\n", aa[0][1]);
printf("aa[1] %s\n", aa[1]);
printf("aa[1][0] %c\n", aa[1][0]);
printf("aa[1][1] %c\n", aa[1][1]);
printf("aaa %s", aaa);
输出是:
F5 D3▒▒▒▒ aa[0] F5D3F5 D3▒▒▒▒ aa[0][0] F aa[0][1] 5 aa[1] D3F5 D3▒▒▒▒ aa[1][0] D aa[1][1] 3 aaa F5F5D3F5 D3▒▒▒▒
请您解释一下,它的作用是什么?为什么这样做?如何修复它,为什么该修复有效而该解决方案无效? (……这个“▒”符号到底是什么?)
谢谢!
【问题讨论】:
-
您需要在数组的末尾添加一个空终止符
'\0'否则它不知道字符串何时结束并且只打印该内存位置中的任何内容 -
cmets 部分有两个答案。为什么?