编写一个程序实现以下3个功能:(1)从文本文件导入学生的数据;(2)显示给定序号学生信息;(3)输出学生成绩表。可利用第1题定义的结构体类型(struct Student),并直接利用或修改第1题已实...

下面是一个示例程序,可以实现上述功能:

``` #include <stdio.h> #include <stdlib.h> #include <string.h>

#define MAX_NAME_LEN 20 #define MAX_GENDER_LEN 10 #define MAX_ID_LEN 20

struct Student { char name[MAX_NAME_LEN]; char gender[MAX_GENDER_LEN]; char id[MAX_ID_LEN]; int age; int score; };

int import_from_file(const char *filename, struct Student **students, int *num_students) { // 从文件导入学生数据 // 将文件中的每行数据转换成结构体存储 // 并将结构体指针和学生数量存储在传入的指针变量中 // 返回0表示成功,返回其他值表示失败 FILE *fp = fopen(filename, "r"); if (!fp) { return -1; }

int count = 0; char line[1024]; while (fgets(line, sizeof(line), fp)) { // 读取文件中的每一行,并将数据转换成结构体 struct Student *student = (struct Student *)malloc(sizeof(struct Student)); if (sscanf(line, "%s %s %s %d %d", student->name, student->gender, student->id, &student->age, &student->score) == 5) { // 将结构体添加到数组中 students[count] = student; count++; } else { // 读取失败,释放内存 free(student); } } fclose(fp);

*num_students = count; return 0; }

void print_student(const struct Student *student) { // 打印学生信息 printf("姓名: %s\n", student->name); printf("性别: %s\n", student->gender); printf("学号: %s\n", student->id); printf("年龄: %d\n", student->age); printf("成绩: %d\n", student->score); }

void print_all(const struct Student **students, int num

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值