使用c语言将long long数组复制到整数数组

时间:2015-07-03 07:15:03

标签: c

我想使用memcpy()将长long数组复制到整数数组。 long long数组的大小是整数数组大小的一半。

memcpy()以外我用过这个:

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

但我只想使用memcpy()

因为目的是,long long数组是一个临时数组,它将其内容复制到源数组的子数组。源阵列是二维阵列。

1 个答案:

答案 0 :(得分:3)

一般来说,sizeof (long long) > sizeof (int)

因此,您无法使用long long等逐字节复制操作将int数组中的所有元素复制到memcpy()数组中;数据不合适。

您可以使用循环来手动执行(截断)副本。这当然会丢失信息:

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];