我有三个指针:
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];
}
上面复制内容的代码无效!
另外,如何打印值?
答案 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);