附加两个void *指针

时间:2011-11-06 23:52:35

标签: c pointers void

有没有办法追加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);
}

我正在读取文件。并且文件可能会更改,如果文件发生更改,我必须逐字节追加。

1 个答案:

答案 0 :(得分:2)

你的问题对你说的方式并没有真正的答案,但我会尝试......

您必须首先使用malloc()分配一块内存。然后,你的void指针指向那个。该块将具有确定的大小。第二个块符合相同的概念,并且具有一定的大小。

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

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

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