c语言结构体删除一个数据
时间: 2023-12-18 18:26:42 浏览: 87
要删除一个结构体中的数据,首先需要找到该数据所在的位置。一种简单的方法是遍历整个结构体数组,找到要删除的数据所在的位置,然后将其后面的数据往前移动一位,最后将结构体数组的长度减一。下面是一个示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
struct student {
int id;
char name[20];
int age;
};
void delete_student(struct student students[], int *size, int id) {
int i, j;
for (i = 0; i < *size; i++) {
if (students[i].id == id) { // 找到要删除的数据
for (j = i; j < *size - 1; j++) {
students[j] = students[j + 1]; // 将后面的数据往前移动
}
(*size)--; // 结构体数组的长度减一
printf("删除成功!\n");
return;
}
}
printf("该学生不存在!\n");
}
int main() {
struct student students[MAX_SIZE];
int size = 0;
// 添加一些数据
students[size].id = 1;
strcpy(students[size].name, "张三");
students[size].age = 20;
size++;
students[size].id = 2;
strcpy(students[size].name, "李四");
students[size].age = 21;
size++;
// 删除一个数据
delete_student(students, &size, 1);
// 打印剩余的数据
int i;
for (i = 0; i < size; i++) {
printf("id: %d, name: %s, age: %d\n", students[i].id, students[i].name, students[i].age);
}
return 0;
}
```
在上面的代码中,我们定义了一个结构体 `student`,包含学生的学号、姓名和年龄。然后定义了一个 `delete_student` 函数,用于删除结构体数组中指定的学生数据。在 `main` 函数中,我们先添加了一些数据,然后调用 `delete_student` 函数删除了学号为 1 的学生数据,最后打印剩余的数据。
阅读全文