gpt4 book ai didi

c - C 中的 Strcpy 输出

转载 作者:太空宇宙 更新时间:2023-11-04 07:21:24 24 4
gpt4 key购买 nike

    #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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com