这是我的 C 代码
#include <stdio.h>
int main()
{
char c[3] = "abc";
char a[6] = "Shamal";
printf("%s\n\n", c);
printf("%s\n\n", a);
return 0;
}
这里的输出是
abcW?
Shamal
6个字符的字符串正确显示字符串,而3个字符的字符串显示W?在代码末尾。
我知道我们需要放置空字符“\0”来终止字符串。但这里两个字符串都没有空字符,但只有一个字符串可以正常工作。这是什么原因?
最佳答案
正如上面的评论所说,undefined是未定义的,但你的问题的确切答案是,偶然发生第一个字符串后面的内存字节不是0,而是'W'然后是'?'之后是 0,它终止一个字符串。
对于第二个字符串,碰巧该字符串后面的一个字节意外地为 0,因此可以正确打印。
尝试重新排序初始化并查看输出是否发生变化(很可能会发生变化)。
关于c - 具有 3 个字符的字符串显示意外的输出,而具有 6 个字符的字符串显示正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46261272/