我的代码是:
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 :(得分:0)
您的字符串没有以'\0'
字符结尾,这就是为什么pritnf将您打印出下一个随机字符
更改代码
char array[5];
array[0] = 'F';
array[1] = '5';
array[2] = ' ';
array[3] = 'D';
array[4] = '3';
到
char array[6] = "F5 D3\0";
它应该工作