c - 如何从c中的数组中删除一系列元素
问题描述
我需要从数组中删除一系列元素,但我不知道如何。我尝试了这个 for 循环,其中 start 是范围的开始,end 是范围的结束。
for (i=0;i<n;i++){
a1[start+i] = a1[end+i+1];;
}
解决方案
从数组中删除一系列元素
在 C 中,一旦定义了数组,元素的范围就固定了。它们不能被删除。@海德
代码可以在运行时重新分配元素值。
有了一个数组[1,2,3,4,5,6,7]
,我们想要“删除” [3,4,5]
,然后以[1,2,6,7, x, x, x]
. 这里x
需要一些值,也许是 0。
size_t start; // Array index of sub-range beginning to "remove"
size_t end; // Array index of sub-range end to "remove"
size_t n = sizeof a1/sizeof a1[0]; // Number of elements in the array
assert(start < n && end < n && start <= end);// Make certain we have sane input
size_t n_move = end - start + 1; // Number of elements to move
memmove(&a1[start], &a1[end + 1], sizeof a1[0]*n_move);
size_t n_clear = n - end; // Number of elements to zero
memset(&a1[end + 1], 0, sizeof a1[0]*n_clear);
OP 代码是什么是有问题的n
?
我希望循环迭代计数为 end - start + 1
.
sub_range_count = end - start + 1;
for (i=0; i<sub_range_count; i++){
a1[start+i] = a1[end+i+1];;
}
这仍然将数组的后半部分保留为原始值。
推荐阅读
- mysql - 如何从同一张表中获取不同id的常见记录?
- .net - SQL 过程超时
- python - 姜戈 | 'function' 对象没有属性'get' | 对于 request.POST.get('email')
- mongodb - Debezium mongodb kafka 连接器没有像在 mongodb 中那样在主题中产生一些记录
- java - FireBase 上传和检索图像 - NullPointerException
- php - 如何使用数据库存储路径显示图像
- python-3.6 - 处理流经 Pub-sub 到 Bigquery 的记录的 unique_id 和时间戳特征
- python - 如何根据压力数组对不包含压力信息的数组进行插值
- c# - 在 c# .NET 4 中将对象添加到列表中
- javascript - 访问不存在的图像 URL 会影响 Web 服务器吗?