Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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输出在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,

我有一个小问题要弄清楚为什么第二个strcpy(s+2,b)输出devwxyz

我理解第一部分,因为它指向[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+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;
}