在一个数组中,每隔8个数据 插入一个新数据,如何用C语言实现?
时间: 2024-09-25 16:21:00 浏览: 13
在 C 语言中,插入新元素到数组中间并保持数组长度不变通常需要创建一个新的数组,然后将原始数据移动到新位置。这里我们假设原始数组是固定的,并且我们知道插入的新数据。以下是实现该功能的一个示例:
```c
#include <stdio.h>
void insert_new_data(int arr[], size_t len, int new_data, size_t interval) {
size_t new_len = (len + 1) * (interval + 1); // 新数组长度
int* new_arr = malloc(new_len * sizeof(int)); // 动态分配新数组
if (!new_arr) { // 检查内存分配是否成功
printf("Memory allocation failed.\n");
return;
}
// 移动原始数据到新数组
for (size_t i = 0; i < len; ++i) {
new_arr[i * (interval + 1)] = arr[i]; // 每隔8个数据插入一次新数据
}
new_arr[len * (interval + 1) - 1] = new_data; // 最后插入新数据
// 释放旧数组
free(arr);
// 更新指针
arr = new_arr;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
size_t len = sizeof(arr) / sizeof(arr[0]);
int new_data = 11; // 新的数据
int interval = 8; // 每隔8个数据插入
insert_new_data(arr, len, new_data, interval);
// 打印新数组
for (size_t i = 0; i <= len * (interval + 1); ++i) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放新数组,别忘了这一步
return 0;
}
```
这个程序首先计算出新数组的大小,然后分配空间并复制原始数组,最后添加新数据。请注意,在实际应用中,记得在完成操作后释放不再使用的内存。