2016-09-10 44 views
2

假設我給出了一個void* data數組,並要求使用2種不同數據類型的信息填充它:int數組和一個字符串。在C中輸入類型 - Ints和Char *

void* data; 
int numbers[9]; 
char* title; 

我明白輸入數字到數據陣列,我需要強制轉換這樣的:

memcpy((int*)data, numbers, sizeof(numbers)); 

可是我該怎麼辦,如果我想提出title在號碼後,地址被複制到數據中?

在此先感謝。

+0

假設'res'實際上是指您的第一個片段中的數據? – WhozCraig

+1

你必須計算標題起點的正確地址嗎? (在這種情況下9個整數值之後)還是你問如何做指針算術? – UnholySheep

回答

1

沒有,有沒有必要與void *鍵入強制轉換,因爲memcpy()作品:

memcpy(data, numbers, sizeof numbers); 

而且不需要() s的sizeof當應用到任何東西,不是一個類型的名字。

對於第二部分,你需要計算地址:

memcpy((char *) data + sizeof numbers, title, 1 + strlen(title)); 

在這裏,我認爲title是一個0結尾的字符串。 datachar *的演員陣容是必要的,因爲您不能使用void *做指針運算。

+0

我當時就是這麼想的,但卻是以一種複雜的方式來做這件事。感謝一堆! – user287474