簡體   English   中英

附加兩個void *指針

[英]append two void* pointers

有沒有辦法追加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()分配一塊內存。 然后,你的void指針指向那個。 該塊將具有確定的大小。 第二個塊符合相同的概念,並且具有確定的大小。

為了將第二個塊附加到第一個塊,應該為第一個塊分配足夠的額外空間來附加第二個塊的內容。 然后,您將使用memcpy()將字節從第二個塊復制到第一個塊。 您需要使用強制轉換為字節指針來指定第一個塊的偏移量。

((unsigned char *)(ptr)+ ptr_alloced_bytes)將是第一個塊到第一個復制數據末尾的偏移量,其中ptr_alloced_bytes是第一個操作讀取的字節數。

否則,您需要分配一個足夠大的新塊以容納兩個塊,然后使用memcpy()復制它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM