用strcpy函数实现结构体字符串数组给一个数并插入比他小的
时间: 2024-03-25 08:39:10 浏览: 17
以下是使用 strcpy 函数实现结构体字符串数组给一个数并插入比他小的示例代码,供您参考:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
// 定义学生结构体
struct student {
char name[MAX_LEN];
int score;
};
// 插入函数,将一个学生插入到学生数组中
void insert(struct student students[], int size, struct student new_student) {
int i, j;
// 查找第一个分数比 new_student.score 小的学生位置
for (i = 0; i < size && students[i].score >= new_student.score; i++);
// 将后面的学生向后移一位
for (j = size - 1; j >= i; j--) {
strcpy(students[j + 1].name, students[j].name);
students[j + 1].score = students[j].score;
}
// 插入新的学生
strcpy(students[i].name, new_student.name);
students[i].score = new_student.score;
}
int main() {
// 定义学生数组
struct student students[5] = {
{"Tom", 78},
{"Jerry", 92},
{"Alice", 85},
{"Bob", 80},
{"John", 88}
};
int size = 5;
struct student new_student = {"Lucy", 83};
printf("Before insert:\n");
for (int i = 0; i < size; i++) {
printf("%s %d\n", students[i].name, students[i].score);
}
insert(students, size, new_student);
size++;
printf("After insert:\n");
for (int i = 0; i < size; i++) {
printf("%s %d\n", students[i].name, students[i].score);
}
return 0;
}
```
该示例代码中定义了一个结构体数组,每个结构体包含一个字符串和一个整数,表示学生的姓名和分数。同时定义了一个插入函数,用于将一个新的学生插入到已有的学生数组中,并保证插入后数组仍然是按照分数从高到低排序的。在插入函数中,先查找第一个分数比新学生分数小的学生位置,然后将后面的学生向后移一位,最后插入新的学生。
注意,在使用 strcpy 函数复制字符串时,需要确保目标字符串的空间足够大,否则可能会发生缓冲区溢出的错误。在示例代码中,我们定义了一个常量 MAX_LEN,用于限制字符串的最大长度。