2015-07-03 51 views
1

我想使用memcpy()將長長陣列複製到整型數組。長長數組的大小是整數數組大小的一半。將長長陣列複製到c語言的整型數組中

除了memcpy()我用這個:

int *dst; 
long long src[10]; 
dst=(int*)src; 

但我只想memcpy()使用。

因爲目的是,long long數組是一個臨時數組,它將其內容複製到源數組的子數組中。源數組是2維數組。

+1

我幾乎可以肯定你不_want_做that..but然後,.... –

+0

你們的榜樣甚至沒有做一個拷貝,而只是一個指針轉換。 – trenki

回答

3

一般來說,sizeof (long long) > sizeof (int)

因此,您無法使用逐字節複製操作(如memcpy())將long long數組中的所有元素複製到int的數組中;數據不適合。

您可以使用循環來手動執行(截斷)副本。這當然會丟失信息:

const long long incoming[] = { 1ll, 2ll, /* more here ... */ }; 
int out[sizeof incoming/sizeof *incoming]; 
for(size_t i = 0; i < sizeof incoming/sizeof *incoming; ++i) 
    out[i] = (int) incoming[i];