输出:“你好”
为什么输出不是“Hello World”?**
#include <stdio.h>
int main ()
{
char x[] = "Hello", y[]="World", xy[50];
int i, j;
for(i=0; x[i] != '\0'; i++) {
xy[i] = x[i];
}
i++;
xy[i] = ' ';
for(j=0; y[j] != '\0'; j++) {
i++;
xy[i] = y[j];
}
printf("%s", xy);
return 0;
}
答案 0 :(得分:2)
这里有一个问题:
i++;
xy[i] = ' ';
您跳过xy
的一个字符,使其未初始化。
要解决此问题,请移除i++
:
xy[i] = ' ';
另一个问题是你不会在最后添加NUL字符。
答案 1 :(得分:1)
这是因为您在设置i
之前会增加xy[i] = ' '
。这会将xy[i]
设置为可能不正确的值。请改用xy[i++] = ' ';
,一般情况下,请注意增量的顺序:程序中有更多地方出错:)
答案 2 :(得分:0)
您是否尝试单步执行代码?如果没有尝试它。您会意识到您在xy中留下了随机字符
i++; //line 10
第10行。好日子它将是一个空字符。所以你只看到一个null。在糟糕的日子里,它可能是任何奇怪的字符,所以你最终可能会得到 Hello!World