C 指针数组不适用于 memcpy

标签 c array-pointer

我想用 memcpy 连接两个字符串。但下一个 memcpy 不起作用。我的预期输出是“我的名字是可汗”。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char *var1 = "my name";
    char *var2= "is khan";
    char *f_add[20];
    memcpy(f_add,var1, strlen(var1)+1);
    memcpy(f_add+8,var2, strlen(var2)+1);

    printf("%s", f_add);
    return 0;
}

最佳答案

char *f_add[20];定义一个由两个指向 char 的指针组成的数组。您可能想要一个包含 20 char 的简单数组:

char f_add[20];

然后你需要复制到正确的位置。复制到f_add+8在标记第一个字符串结尾的空字节之后开始写入,因为该字符串“my name”有七个非空字符和一个空终止符。所以你需要从空字符开始复制:

memcpy(f_add+7, var2, strlen(var2)+1);

您还可以使用memcpy(f_add + strlen(f_add), var2, strlen(var2)+1); ,尽管这实际上就是 strcpy(f_add, var2)确实如此。

关于C 指针数组不适用于 memcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65991322/

相关文章:

c - 为什么我的 PRIME1 - SPOJ 实现会收到 SIGSEGV,即使它在我的电脑中的所有测试用例中运行良好?

c - 如何检测ODBC DB2连接编码(代码页)

c - 如何使用socket编程在c中找到客户端地址

java - native a方法中的参数传递

mysql - 嵌入式mysql服务器和应用程序大小

c++ - 如何阅读复杂的类型?