Strcpy索引输出

Strcpy索引输出,c,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("

我试图用这段代码来解决这个问题,但似乎索引对我不起作用

#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;
}
#包括
#包括
int main(int argc,char*argv[])
{
char*a=“abcde”;
char*b=“vwxyz”;
chars[10];
strcpy(s,a+0);
printf(“%s\n”,s);
strcpy(s+1,b);
printf(“%s\n”,s);
返回0;
}
希望有人能解释,因为第一次strcpy导致abcde。对于s[1],这将是字母“b”,所以不是abvwxyz吗?但正确的结果是avwxyz

那不是
abvwxyz


否。它将提供
avwxyz
作为输出
s+1
指向数组的第二个元素
s
(衰减后),即
b
。复制将从字母
b
开始<代码>b被
v
覆盖

“avwxyz”是正确答案。这是因为strcpy替换了指定索引处的字符,您可能希望执行s+2,这将导致“abwxyz”

这几乎是您一小时前发布的另一个问题的重复:为什么您再次发布相同的问题?很抱歉,但此问题与第一段代码不同,我在按照你给我展示的方式使用它时遇到了一些问题,(我想我没有完全理解它),但是通过评论,从我看到的来看,你必须查看索引,然后在指定的索引处复制vwxyz。