我想用 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/