c语言利用结构体数组指针和函数实现录入学生信息和显示学生信息(姓名,学号,班级等)
时间: 2024-09-21 15:13:43 浏览: 158
在 C 语言中,我们可以使用结构体(struct)来表示学生的相关信息,如姓名、学号和班级。首先,我们定义一个名为 `Student` 的结构体,然后定义一个结构体数组来存储多个学生的信息。接下来,我们可以创建一个函数用于输入学生信息,另一个函数用于显示学生信息。
```c
// 定义学生信息结构体
typedef struct {
char name[50]; // 姓名
int id; // 学号
char class[20]; // 班级
} Student;
// 动态分配结构体数组
void input_students(Student** students, int num) {
*students = (Student*)malloc(num * sizeof(Student));
for (int i = 0; i < num; i++) {
printf("请输入第 %d 个学生的姓名:", i + 1);
fgets((*students)[i].name, sizeof(*students[i].name), stdin); // 避免换行符
printf("请输入学号:");
scanf("%d", &(*students)[i].id);
printf("请输入班级:");
fgets((*students)[i].class, sizeof(*students[i].class), stdin);
}
}
// 显示学生信息函数
void display_students(const Student* students, int num) {
for (int i = 0; i < num; i++) {
printf("学生 %d: 姓名:%s, 学号:%d, 班级:%s\n",
i + 1, (*students)[i].name, (*students)[i].id, (*students)[i].class);
}
}
// 主函数示例
int main() {
int numStudents;
printf("请输入学生总数:");
scanf("%d", &numStudents);
Student* studentsArray;
input_students(&studentsArray, numStudents);
display_students(studentsArray, numStudents);
free(studentsArray); // 释放动态内存
return 0;
}
```
在这个例子中,用户会被提示输入学生人数和每个学生的详细信息。`input_students` 函数负责收集数据,而 `display_students` 函数则用于展示已录入的学生信息。注意,在读取字符串时,我们使用了 `fgets` 函数避免输入到结构体内的值包含多余的换行符。
阅读全文