2014-01-30 67 views
0

我試圖用這一段代碼來弄明白,似乎索引並沒有爲我工作..STRCPY索引輸出

#include <stdio.h> 
#include <string.h> 
int main(int argc, char* argv[]) 
{ 
    char *a = "abcde"; 
    char *b = "vwxyz"; 
    char s[10]; 

    strcpy(s,a+0); 
    printf("%s\n",s); 

    strcpy(s+1,b); 
    printf("%s\n",s); 
    return 0; 
} 

希望有人能解釋一下,因爲在ABCDE第一strcpy的結果。和s [1]這將取決於字母'b',所以它不是abvwxyz?但正確的結果是avwxyz。

+1

這幾乎與您在一小時前發佈的另一個問題的副本相同:http:// stackoverflow .com/q/21445881/827263 –

+0

爲什麼你又發佈了同樣的問題? – haccks

+0

對不起,但這個問題與第一段代碼不一樣,而且我遇到了問題,使它與我展示的方式一致(我想我沒有完全理解它),但是要通過評論,從我看到的,你必須看看索引,然後在指定的索引處複製vwxyz。 – user3039950

回答

1

難道不是abvwxyz

不會,它會給出avwxyz作爲輸出。 s+1指向數組s的第二個元素(衰減之後),即b。複製將從字母b開始。 bv覆蓋。

0

'avwxyz'是正確的答案。這是因爲strcpy替換指定索引處的字符,您可能想要執行s + 2,這會導致'abwxyz'