2015-07-03 19 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];