2011-11-06 69 views
0

有沒有辦法追加2 void * ptr?是每一個字符數組:追加兩個void *指針

例如:

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); 
} 

我從文件中讀取。該文件可能會改變,如果文件改變,我必須逐字節追加。

+2

目前還不清楚你想做什麼?將2個地址添加在一起?或添加內容? –

+1

爲什麼不使用char *而不是void *? – nooga

+0

除非你知道它們有多大,否則看起來你沒有。 (每個可以在0到3個字節之間,具體取決於) –

回答

2

你的問題並沒有真正對你措辭的方式回答,但我會嘗試...

您必須先分配的內存塊,使用malloc()。然後,你的void指針會指向那個。該塊將有一個確定的大小。第二塊符合相同的概念,並具有確定的大小。

爲了將第二個追加到第一個,應該爲第一個塊分配足夠的額外空間以追加第二個塊的內容。然後,您將使用memcpy()將第二個塊的字節複製到第一個塊。您將需要使用強制轉換爲字節指針來指定第一個塊的偏移量。 ((unsigned char *)(ptr)+ ptr_alloced_bytes)將是第一個塊到第一個複製數據結尾的偏移量,其中ptr_alloced_bytes是第一個操作讀取的字節數。

否則,您需要分配一個足夠大的新塊來保存兩個塊,然後使用memcpy()複製它們。

+0

是的,我很抱歉,我有一個分配內存/重新分配功能。完全忘了把它放在...會更新帖子。同時,我會嘗試使用memcpy。謝謝, – pauliwago

+0

我想弄清楚memcpy,但即使我分配了一個足夠大的塊以容納兩個塊,我可以使用它來追加嗎?或者將源碼複製到目的地? – pauliwago

+0

歡迎您...但我會建議使用不同的方法。我假設你正在學習C.我可以在SAMS PUBLISHING的21天內推薦一本書C。一個好的在線教程是Coranado Enterprizes C教程。 –