怎么删除结构体数组中的数据
时间: 2023-06-15 17:07:15 浏览: 96
要删除结构体数组中的数据,可以采用以下方法:
1. 将要删除的元素后面的元素全部向前移动,覆盖要删除的元素,最后将数组长度减一。
2. 将要删除的元素与数组最后一个元素交换位置,然后将数组长度减一。
第一种方法的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
} Student;
int main() {
Student students[5] = {
{1, "Tom"},
{2, "Jerry"},
{3, "Alice"},
{4, "Bob"},
{5, "Cindy"}
};
int len = 5; // 数组长度为 5
int del_id = 3; // 要删除的学生 ID 是 3
int i, j;
for (i = 0; i < len; i++) {
if (students[i].id == del_id) { // 找到要删除的学生
for (j = i + 1; j < len; j++) {
students[j - 1] = students[j]; // 向前移动
}
len--; // 数组长度减一
break;
}
}
for (i = 0; i < len; i++) { // 打印剩余学生
printf("id: %d, name: %s\n", students[i].id, students[i].name);
}
return 0;
}
```
第二种方法的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
} Student;
int main() {
Student students[5] = {
{1, "Tom"},
{2, "Jerry"},
{3, "Alice"},
{4, "Bob"},
{5, "Cindy"}
};
int len = 5; // 数组长度为 5
int del_id = 3; // 要删除的学生 ID 是 3
int i;
for (i = 0; i < len; i++) {
if (students[i].id == del_id) { // 找到要删除的学生
students[i] = students[len - 1]; // 与最后一个学生交换位置
len--; // 数组长度减一
break;
}
}
for (i = 0; i < len; i++) { // 打印剩余学生
printf("id: %d, name: %s\n", students[i].id, students[i].name);
}
return 0;
}
```