gpt4 book ai didi

c - 附加两个 void* 指针

转载 作者:行者123 更新时间:2023-11-30 14:27:18 27 4
gpt4 key购买 nike

有没有办法追加 2 个 void* ptr?每个都是一个字符数组:

例如:

void * ptr;
ptr = malloc(3);
read(0, ptr, 3);

void * rtr;
rtr = malloc(3);
read (0, rtr, 3);

/*how to add ptr and rtr??*/

谢谢!

*编辑:是的,我想将内容添加在一起。实际上,这更多的是我的代码的工作方式:

void *ptr;
ptr = malloc(3);
read(0, ptr, 3);

void *rtr;
rtr = malloc(1);
int reader;
reader=read(0, rtr, 1);
int i=1;
while(reader!=0){
/* append contents of rtr to ptr somehow?? */
i++;
rtr = realloc(rtr, i);
reader=read(0, rtr, 1);
}

我正在读取文件。而且文件可能会发生变化,如果文件发生变化,我必须逐字节附加。

最佳答案

按照你的措辞方式,你的问题并没有真正的答案,但我会尝试......

您必须首先使用 malloc() 分配一 block 内存。然后,你的 void 指针将指向它。该 block 将具有确定的大小。第二 block 符契约(Contract)样的概念,并且有一定的大小。

为了将第二个 block 附加到第一个 block ,应该为第一个 block 分配足够的额外空间来附加第二个 block 的内容。然后,您可以使用 memcpy() 将字节从第二个 block 复制到第一个 block 。您需要使用字节指针的转换来指定第一个 block 的偏移量。

((unsigned char *)(ptr) + ptr_alloced_bytes) 是第一个 block 到第一个复制数据末尾的偏移量,其中 ptr_alloced_bytes 是第一个操作读取的字节数。

否则,您需要分配一个足够大的新 block 来容纳这两个 block ,然后使用 memcpy() 复制它们。

关于c - 附加两个 void* 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031340/

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