关于#chatgpt#的问题,如何解决?

现有一批新生需录入信息(包括学号,姓名,高考,成绩),根据报道顺序录入学生信息后,根据学号升序排序写入文件中,然后把文件内容打印到屏幕上


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

#define MAX_STUDENT_NUM 1000
#define MAX_NAME_LEN 20

typedef struct {
    int id;
    char name[MAX_NAME_LEN];
    int gaokao;
    int score;
} Student;

int compare(const void *a, const void *b) {
    return ((Student *)a)->id - ((Student *)b)->id;
}

int main() {
    Student students[MAX_STUDENT_NUM];
    int num = 0;

    // 读入学生信息
    printf("请输入学生信息(学号 姓名 高考成绩 成绩):\n");
    while (scanf("%d %s %d %d", &students[num].id, students[num].name, &students[num].gaokao, &students[num].score) == 4) {
        num++;
    }

    // 根据学号升序排序
    qsort(students, num, sizeof(Student), compare);

    // 写入文件
    FILE *fp = fopen("students.txt", "w");
    if (fp == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    for (int i = 0; i < num; i++) {
        fprintf(fp, "%d %s %d %d\n", students[i].id, students[i].name, students[i].gaokao, students[i].score);
    }
    fclose(fp);

    // 打印到屏幕上
    fp = fopen("students.txt", "r");
    if (fp == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    printf("学号\t姓名\t高考成绩\t成绩\n");
    while (fscanf(fp, "%d %s %d %d", &students[num].id, students[num].name, &students[num].gaokao, &students[num].score) == 4) {
        printf("%d\t%s\t%d\t\t%d\n", students[num].id, students[num].name, students[num].gaokao, students[num].score);
    }
    fclose(fp);

    return 0;
}

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

// 学生结构体类型
typedef struct {
    char studentID[20];
    char name[30];
    int gaokaoScore;
    double grade;
} Student;

// 比较函数,用于排序
int compare(const void* a, const void* b) {
    return strcmp(((Student*)a)->studentID, ((Student*)b)->studentID);
}

int main() {
    int numStudents;
    printf("请输入新生数量:");
    scanf("%d", &numStudents);

    // 动态分配新生信息存储空间
    Student* students = (Student*)malloc(numStudents * sizeof(Student));

    // 录入新生信息
    printf("请按顺序录入学生信息:\n");
    for (int i = 0; i < numStudents; i++) {
        printf("请输入第%d个学生的学号:", i + 1);
        scanf("%s", students[i].studentID);
        printf("请输入第%d个学生的姓名:", i + 1);
        scanf("%s", students[i].name);
        printf("请输入第%d个学生的高考分数:", i + 1);
        scanf("%d", &(students[i].gaokaoScore));
        printf("请输入第%d个学生的成绩:", i + 1);
        scanf("%lf", &(students[i].grade));
    }

    // 根据学号升序排序
    qsort(students, numStudents, sizeof(Student), compare);

    // 将排序后的新生信息写入文件
    FILE* file = fopen("students.txt", "w");
    if (file == NULL) {
        printf("无法打开文件!");
        return 1;
    }
    for (int i = 0; i < numStudents; i++) {
        fprintf(file, "学号:%s,姓名:%s,高考分数:%d,成绩:%.2lf
",
            students[i].studentID, students[i].name, students[i].gaokaoScore, students[i].grade);
    }
    fclose(file);

    // 打印文件内容到屏幕上
    char line[100];
    file = fopen("students.txt", "r");
    if (file == NULL) {
        printf("无法打开文件!");
        return 1;
    }
    while (fgets(line, sizeof(line), file) != NULL) {
        printf("%s", line);
    }
    fclose(file);

    // 释放动态分配的内存
    free(students);

    return 0;
}