c - C 中的 Strcpy 输出

标签 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+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/

相关文章:

c - ptrace 后读取/proc/$pid/mem 时出现 IO 错误

c - 理解c代码有困难

c - 从递归哈夫曼树返回结构体数组 C

c++ - 非常基本的c问题

c - 如何在 C 中找到动态分配数组的大小?

这个奇怪的函数可以直接计算吗?

java - fatal error : jni. h:没有那个文件或目录

c - 为什么取消引用使我的程序更快?

c++ - 为C++程序编写MASM函数

c - 移植 InterlockedExchange,仅使用 GCC 内部函数