有没有办法追加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);
}
我正在读取文件。并且文件可能会更改,如果文件发生更改,我必须逐字节追加。
答案 0 :(得分:2)
你的问题对你说的方式并没有真正的答案,但我会尝试......
您必须首先使用malloc()分配一块内存。然后,你的void指针指向那个。该块将具有确定的大小。第二个块符合相同的概念,并且具有一定的大小。
为了将第二个块附加到第一个块,应该为第一个块分配足够的额外空间来附加第二个块的内容。然后,您将使用memcpy()将字节从第二个块复制到第一个块。您需要使用强制转换为字节指针来指定第一个块的偏移量。
((unsigned char *)(ptr)+ ptr_alloced_bytes)将是第一个块到第一个复制数据末尾的偏移量,其中ptr_alloced_bytes是第一个操作读取的字节数。
否则你需要分配一个足够大的新块以容纳两个块,然后使用memcpy()复制它们。