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。