如何使用C中的指针将一个数组的内容复制到另一个数组?

时间:2015-10-13 05:28:19

标签: c pointers

我有三个指针:

int *x,*y, *Temp;

然后我做了

x = (int *)malloc(sizeof(int)*m);
y = (int *)malloc(sizeof(int)*n);
Temp = (int *)malloc(sizeof(int)*(m+n));

其中m和n是特定值。

接下来,我在Temp中输入了值。

  for(i=0; i < m+n; i++) {
  scanf("%d", Temp+i);
  }

我想要一半的温度在x,另一半在y。我该怎么做?

for(i=0; i < m; i++) {
  x[i] = Temp[i];
}

上面复制内容的代码无效!

另外,如何打印值?

4 个答案:

答案 0 :(得分:5)

使用memcpy可能是实现目标的最简单方法:

memcpy(x, Temp, m * sizeof*Temp);
memcpy(y, &Temp[m], n * sizeof*Temp);

要打印值,只需使用printf

puts("Values in x:");
for(int i = 0; i < m; ++i) {
      printf("%d\n", x[i]); 
}

puts("Values in y:");
for(int i = 0; i < n; ++i) {
      printf("%d\n", y[i]);
}

答案 1 :(得分:3)

答案 2 :(得分:3)

您可以使用以下方法打印值。为了更清晰,我只使用M代替m

for(i=0; i < M; i++) {
printf("VAL: %d\n",x[i]);
}

同样,您也可以打印另一个数组y

答案 3 :(得分:0)

看起来你不需要分配所有内存,也不需要复制它。考虑使用这种替代方法:

int* xy = malloc(sizeof(*xy) * (m+n));
int* x = xy;
int* y = xy + n;
...
free(xy);