用memcpy函数赋值数组中间某段数据,写个例程
时间: 2023-06-30 16:06:46 浏览: 107
C语言数组赋值一例
下面是一个用 `memcpy` 函数赋值数组中间某段数据的例程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {6, 7, 8, 9, 10};
int len1 = sizeof(arr1) / sizeof(int);
int len2 = sizeof(arr2) / sizeof(int);
int start = 1;
int end = 3; // 要拷贝的数据范围是 arr1[1] 到 arr1[3]
int count = end - start + 1;
printf("Before memcpy:\n");
for (int i = 0; i < len1; i++) {
printf("%d ", arr1[i]);
}
printf("\n");
memcpy(arr1 + start, arr2 + start, count * sizeof(int));
printf("After memcpy:\n");
for (int i = 0; i < len1; i++) {
printf("%d ", arr1[i]);
}
printf("\n");
return 0;
}
```
上述代码先定义了两个数组 `arr1` 和 `arr2`,并且给它们赋了初值。然后通过 `sizeof` 运算符计算出数组长度,定义了要拷贝的数据范围 `start` 和 `end`,以及要拷贝的数据个数 `count`。
接着,使用 `memcpy` 函数将 `arr2` 中的数据拷贝到 `arr1` 中的对应位置。这里需要注意的是,由于 `memcpy` 函数的第一个参数是目标地址,因此需要将 `arr1` 的起始地址加上要拷贝的数据的起始位置 `start`,而第二个参数是源地址,因此需要将 `arr2` 的起始地址加上同样的偏移量 `start`。
最后,为了验证 `memcpy` 函数的效果,我们打印出了拷贝前后的数组内容。
阅读全文