在另一个char数组中写两个char数组不起作用

时间:2011-12-14 15:31:38

标签: c char arrays

输出:“你好”
为什么输出不是“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;
}

3 个答案:

答案 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