结构体数组剔除某一个为0的值
时间: 2024-10-09 13:09:25 浏览: 30
labview删除一维数组中的所有0元素
结构体数组中如果有某个元素为0的情况,如果你想剔除这些0值,你可以遍历整个数组,将非零值复制到一个新的结构体数组中。这里以C语言为例:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设我们有一个名为Person的结构体
struct Person {
char name[50];
int age;
};
void removeZeros(struct Person source[], struct Person destination[], size_t count) {
size_t i = 0; // 新数组的索引
for (size_t j = 0; j < count; ++j) {
if (source[j].age != 0) {
// 如果年龄不为0,则将源数组元素复制到新数组
destination[i] = source[j];
i++; // 更新新数组的索引
}
}
// 最后,新数组的有效元素长度会比源数组少,记得更新destination数组的实际大小
destination[i] = (struct Person){NULL, 0}; // 或者置空,表示数组结束
}
int main() {
struct Person arr[] = {{"Alice", 25}, {"Bob", 0}, {"Charlie", 30}, {"Dave", 0}};
size_t arr_size = sizeof(arr) / sizeof(arr[0]);
// 创建一个新数组来存储剔除非0值的结果
struct Person result[arr_size]; // 假定初始大小
removeZeros(arr, result, arr_size);
// 现在result数组只包含非0年龄的人
for (size_t k = 0; k <= i; ++k) {
printf("Name: %s, Age: %d\n", result[k].name, result[k].age);
}
return 0;
}
```
阅读全文