【发布时间】:2021-04-06 03:34:55
【问题描述】:
#include<stdio.h>
#include<string.h>
main()
{
char c[2];
strcpy(c,"Hello World");
printf("%s",c);
}
在上面的代码中,我初始化了一个只能容纳两个字符的字符数组。那么,上面代码的输出一定是“He”。但是,我发现输出是“Hello World”。这怎么可能?
调试这个程序我发现直到执行 printf 语句,c 的值确实(如预期的那样)“He”。但是在 printf 执行后,完整的文本“Hello World”会打印在输出屏幕上!
有趣的是 c 包含字符串“He”,但是当我们打印出 c 时,它会打印出“Hello World”!!
谁能解释一下这是怎么回事?
【问题讨论】:
-
这是未定义的行为;您正在将“Hello World”写入数组末尾。 C 不关心数组的长度(它也不知道数组的长度),它只关心它在哪里找到一个超过结尾的空字节。
-
哦!好吧...@Aplet123