2011-12-14 71 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糟糕的日子它可以是任何奇怪的字符所以你可能最終得到你好!世界