用memcpy函数赋值数组中间某段数据,写个例程
时间: 2023-06-30 09:06:45 浏览: 46
下面是一个用memcpy函数赋值数组中间某段数据的例程:
```
#include <stdio.h>
#include <string.h>
#define ARRAY_SIZE 10
int main()
{
int arr[ARRAY_SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int start_index = 2;
int end_index = 6;
int new_data[ARRAY_SIZE] = {11, 12, 13, 14, 15};
memcpy(&arr[start_index], new_data, (end_index - start_index + 1) * sizeof(int));
for (int i = 0; i < ARRAY_SIZE; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
```
这个例程中,我们定义了一个长度为10的整数数组arr,并且给它赋了初值。我们想要将数组中下标从2到6的数据替换成新的一段数据{11, 12, 13, 14, 15}。我们可以使用memcpy函数来实现这个功能。
memcpy函数的第一个参数是目标地址,也就是我们想要替换的那段数据的起始地址。在本例中,目标地址是arr数组中下标为2的位置。第二个参数是源地址,也就是我们想要复制到目标地址的新数据的起始地址。在本例中,源地址是new_data数组的起始地址。第三个参数是要复制的数据的大小,也就是我们要替换的那段数据的长度。在本例中,要复制的数据大小是5个整数,因此需要乘以每个整数的大小(sizeof(int))。
最后,我们输出了替换后的数组arr,验证了替换是否成功。