#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char *a = "abcde";
char *b = "vwxyz";
char s[10];
strcpy(s,a+3);
printf("%s\n",s);
strcpy(s+2,b);
printf("%s\n",s);
return 0;
}
我在弄清楚为什么第二个 strcpy(s+2,b) 输出 devwxyz 时遇到了一个小问题。
我理解第一部分,因为它指向 a[3] 并从那时开始计算到空字符,即“de”。
输出是:
德
开发人员
基本上,我不知道如何找到“s+2”,我不确定为什么它在最终输出的开头是“de”。 'devwxyz'
希望有人能帮忙,谢谢大家。
编辑:
我试图用这段代码来解决这个问题,但索引似乎对我不起作用..
#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。
最佳答案
您的代码调用了两次 strcpy()
。正如您所描述的,第一个副本“de”。
第二个将“vwxyz”复制到s
中第三个字符的地址(s + 2
)。由于 s
只有两个字符长,它有效地将“vwxyz”附加到“de”。
关于c - C 中的 Strcpy 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21445881/