Strcpy输出在C中 #包括 #包括 int main(int argc,char*argv[]) { char*a=“abcde”; char*b=“vwxyz”; chars[10]; strcpy(s,a+3); printf(“%s\n”,s); strcpy(s+2,b); printf(“%s\n”,s); 返回0; }
我有一个小问题要弄清楚为什么第二个strcpy(s+2,b)输出devwxyz 我理解第一部分,因为它指向[3],然后计数到空字符,即“de” 输出为: 德 德维克斯 基本上,我不知道如何找到“s+2”,我也不知道为什么在最终输出的开头是“de”devwxyz' 希望有人能帮忙,谢谢大家 编辑: 我试图用这段代码来解决这个问题,但似乎索引对我不起作用Strcpy输出在C中 #包括 #包括 int main(int argc,char*argv[]) { char*a=“abcde”; char*b=“vwxyz”; chars[10]; strcpy(s,a+3); printf(“%s\n”,s); strcpy(s+2,b); printf(“%s\n”,s); 返回0; },c,C,我有一个小问题要弄清楚为什么第二个strcpy(s+2,b)输出devwxyz 我理解第一部分,因为它指向[3],然后计数到空字符,即“de” 输出为: 德 德维克斯 基本上,我不知道如何找到“s+2”,我也不知道为什么在最终输出的开头是“de”devwxyz' 希望有人能帮忙,谢谢大家 编辑: 我试图用这段代码来解决这个问题,但似乎索引对我不起作用 #include <stdio.h> #include <string.h> int main(int argc,
#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;
}
#包括
#包括
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。您的代码有两个对strcpy()的调用。。正如你所描述的,最初的副本是“de”
第二个将“vwxyz”复制到
s
(s+2
)中第三个字符的地址。由于s
只有两个字符长,因此它有效地将“vwxyz”附加到“de”之后。您的代码有两次调用strcpy()
。正如你所描述的,最初的副本是“de”
第二个将“vwxyz”复制到
s
(s+2
)中第三个字符的地址。由于s
只有两个字符长,因此它有效地将“vwxyz”附加到“de”之后。您的代码有两次调用strcpy()
。正如你所描述的,最初的副本是“de”
第二个将“vwxyz”复制到
s
(s+2
)中第三个字符的地址。由于s
只有两个字符长,因此它有效地将“vwxyz”附加到“de”之后。您的代码有两次调用strcpy()
。正如你所描述的,最初的副本是“de”
第二个将“vwxyz”复制到
s
(s+2
)中第三个字符的地址。由于s
只有两个字符长,因此它有效地将“vwxyz”附加到“de”之后。找到s+2的方式与找到+3的方式相同。在本例中,s的第三个字符是第一次复制的\0(并被此strcpy替换)。找到s+2的方式与找到+3的方式相同。在本例中,s的第三个字符是第一次复制的\0(并被此strcpy替换)。找到s+2的方式与找到+3的方式相同。在本例中,s的第三个字符是第一次复制的\0(并被此strcpy替换)。找到s+2的方式与找到+3的方式相同。在这种情况下,s的第三个字符是第一次复制的\0(并被此strcpy替换)。读取指针算术s
衰减为指针后,指向数组的元素0
s+2
指向数组的元素2
。s+2
指向s[2]
。我不知道如何找到“s+2”--你是说你不知道如何数到2?我不知道为什么在最终输出的开头是“de”为什么不呢?您将“de”复制到s中,但后来没有更改它。希望有人能帮忙,谢谢大家很难找出你不理解的明显的事情。仔细阅读指针运算s
衰减为指针后,指向数组的元素0
s+2
指向数组的元素2
。s+2
指向s[2]
。我不知道如何找到“s+2”--你是说你不知道如何数到2?我不知道为什么在最终输出的开头是“de”为什么不呢?您将“de”复制到s中,但后来没有更改它。希望有人能帮忙,谢谢大家很难找出你不理解的明显的事情。仔细阅读指针运算s
衰减为指针后,指向数组的元素0
s+2
指向数组的元素2
。s+2
指向s[2]
。我不知道如何找到“s+2”--你是说你不知道如何数到2?我不知道为什么在最终输出的开头是“de”为什么不呢?您将“de”复制到s中,但后来没有更改它。希望有人能帮忙,谢谢大家很难找出你不理解的明显的事情。仔细阅读指针运算s
衰减为指针后,指向数组的元素0
s+2
指向数组的元素2
。s+2
指向s[2]
。我不知道如何找到“s+2”--你是说你不知道如何数到2?我不知道为什么在最终输出的开头是“de”为什么不呢?您将“de”复制到s中,但后来没有更改它。希望有人能帮忙,谢谢大家很难找出你不理解的明显的事情。完美的解释!我现在明白了!谢谢你,老兄!完美的解释!我现在明白了!谢谢你,老兄!完美的解释!我现在明白了!谢谢你,老兄!完美的解释!我现在明白了!谢谢你,老兄!
#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;
}