Strcpy索引输出

时间:2014-01-30 01:54:51

标签: c

我试图用这段代码搞清楚,似乎索引对我来说不起作用..

#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;
}

希望有人可以解释,因为第一次strcpy导致了abcde。并且s [1]将达到字母'b'所以不是abvwxyz?但是正确的结果是avwxyz。

2 个答案:

答案 0 :(得分:1)

  

不是abvwxyz吗?

没有。它将avwxyz作为输出。 s+1指向数组s的第二个元素(在衰减之后),即b。复制将从字母b开始。 b会覆盖v

答案 1 :(得分:0)

'avwxyz'是正确的答案。这是因为strcpy替换了指定索引处的字符,你可能想做s + 2会导致'abwxyz'