gpt4 book ai didi

用 memcpy 复制两个 char* 到 **buff - C 语言

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:58 26 4
gpt4 key购买 nike

我有两个字符指针:

char *a="A";
char *b="B";

还有一个指向指针缓冲区的指针:

char **buf = malloc(sizeof(char*)*2);

我想使用 memcpy 将两个变量复制到 buf:

memcpy(*buf, &a, sizeof(char*));
memcpy(*buf, &b, sizeof(char*));

但它替换了第一个变量..

我怎样才能复制两个?

最佳答案

你到底想做什么?

char **buf = malloc(sizeof(char*)*2);

memcpy(*buf, &a, sizeof(char*));
memcpy(*buf, &b, sizeof(char*));

除非你省略了中间的一些初始化,否则你会得到未定义的行为。 malloced 内存的内容未指定,因此当 *bufmemcpy 中被解释为 void* ,这几乎肯定不会产生有效指针,并且它是空指针的概率不可忽略。

如果你只是想让 buf 包含两个指针,在 malloc 之后

buf[0] = a;
buf[1] = b;

是最简单、最干净的解决方案,但是

memcpy(buf, &a, sizeof a);
memcpy(buf + 1, &b sizeof b);

也是有效的(同样使用 &buf[1] 而不是 buf + 1

如果您想连接ab 指向的字符串,您采用了完全错误的方法。您需要一个 char* 指向足够大的区域来保存结果(包括 0 终止符),最简单的方法是使用 strcat

关于用 memcpy 复制两个 char* 到 **buff - C 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12872881/

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