用strcpy函数实现结构体字符串数组找到一个数并删除
时间: 2024-03-25 17:38:21 浏览: 59
假设我们有一个结构体数组,每个结构体包含一个字符串成员,我们要在该结构体数组中查找一个字符串并将其删除,可以使用`strcpy`函数和结构体指针实现。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_STUDENTS 100
typedef struct {
char name[MAX_NAME_LEN];
} Student;
int main() {
Student students[MAX_STUDENTS];
int numStudents = 0;
char toRemove[MAX_NAME_LEN];
// 读取学生名字并存入结构体数组中
printf("请输入学生名字,以\"quit\"结束:\n");
while (numStudents < MAX_STUDENTS) {
scanf("%s", students[numStudents].name);
if (strcmp(students[numStudents].name, "quit") == 0) {
break;
}
numStudents++;
}
// 输入要删除的学生名字
printf("请输入要删除的学生名字:\n");
scanf("%s", toRemove);
// 查找要删除的学生名字并删除
for (int i = 0; i < numStudents; i++) {
if (strcmp(students[i].name, toRemove) == 0) {
for (int j = i; j < numStudents - 1; j++) {
strcpy(students[j].name, students[j+1].name);
}
numStudents--;
break;
}
}
// 输出剩余学生名字
printf("剩余学生名字如下:\n");
for (int i = 0; i < numStudents; i++) {
printf("%s\n", students[i].name);
}
return 0;
}
```
在上面的代码中,我们使用了`strcpy`函数将一个结构体成员的值复制到另一个结构体成员中,从而实现了删除操作。需要注意的是,在删除一个结构体成员之后,我们需要将结构体数组的总长度减1,以保证数组中没有空洞。
阅读全文