2011-12-14 70 views
1

输出: “你好”
为什么输出的心不是 “Hello World” 的**写两个char数组在其他字符数组不工作

#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

删除孤独的`我++;`。 – 2011-12-14 15:34:20

回答

2

一个问题就在这里:

i++; 
    xy[i] = ' '; 

您跳过xy的一个字符,使其未初始化。

要修复,删除i++

xy[i] = ' '; 

另一个问题是,你没有在最后追加一个NULL字符。

1

这是因为您在设置xy[i] = ' '之前递增i。这会将xy[i]设置为可能不正确的值。使用xy[i++] = ' ';来代替,一般来说,请注意你的增量顺序:你的程序中有更多的地方你错了:)

0

你是否试过单步执行代码?如果不尝试。会意识到你在XY留下了随机字符,当你没有

 i++; //line 10 

在行10.On好日子这将是一个空character.So你只看到一个null.On糟糕的日子它可以是任何奇怪的字符所以你可能最终得到你好!世界