指针的使用和构建文件文档

2,新建一个文件文档,现在学生信,息 20 人(已包含前面学生结构体中的信息),要求利用文件指针去实现从键盘输入学生信息,在原有文件后加入 10 个学生信


#include <stdio.h>  
#include <stdlib.h>  
  
#define MAX_NAME_LENGTH 50  
#define MAX_STUDENTS 30  
  
struct Student {  
    char name[MAX_NAME_LENGTH];  
    int age;  
    float score;  
};  
  
int main() {  
    FILE *fp;  
    struct Student students[MAX_STUDENTS];  
    int num_students = 0;  
  
    // 打开文件,将原有文件内容读入内存变量中  
    fp = fopen("students.txt", "r+");  
    if (fp == NULL) {  
        printf("无法打开文件!\n");  
        exit(1);  
    }  
  
    // 从文件读取已有学生信息  
    while (fscanf(fp, "%s %d %f", students[num_students].name, &students[num_students].age, &students[num_students].score) != EOF) {  
        num_students++;  
    }  
  
    // 从键盘输入新学生信息  
    printf("请输入 10 个新学生的信息(姓名 年龄 分数):\n");  
    for (int i = 0; i < 10; i++) {  
        scanf("%s %d %f", students[num_students].name, &students[num_students].age, &students[num_students].score);  
        num_students++;  
    }  
  
    // 将内存中的所有学生信息写回到文件中  
    rewind(fp);  
    for (int i = 0; i < num_students; i++) {  
        fprintf(fp, "%s %d %f\n", students[i].name, students[i].age, students[i].score);  
    }  
  
    // 关闭文件  
    fclose(fp);  
  
    printf("操作完成!\n");  
  
    return 0;  
}

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

#define MAX_STUDENT_NUM 30

struct student {
    char name[20];
    int age;
    char gender[10];
};

int main() {
    FILE *fp;
    struct student students[MAX_STUDENT_NUM];
    int i, num;

    // 从文件中读取已有学生信息
    fp = fopen("students.txt", "r");
    if (fp == NULL) {
        printf("File open error!\n");
        exit(1);
    }
    num = 0;
    while (fscanf(fp, "%s %d %s", students[num].name, &students[num].age, students[num].gender) != EOF) {
        num++;
    }
    fclose(fp);

    // 从键盘输入新学生信息
    for (i = num; i < num + 10; i++) {
        printf("Please input student %d's name, age and gender: ", i+1);
        scanf("%s %d %s", students[i].name, &students[i].age, students[i].gender);
    }

    // 将所有学生信息写入文件
    fp = fopen("students.txt", "w");
    if (fp == NULL) {
        printf("File open error!\n");
        exit(1);
    }
    for (i = 0; i < num + 10; i++) {
        fprintf(fp, "%s %d %s\n", students[i].name, students[i].age, students[i].gender);
    }
    fclose(fp);

    printf("All student information has been saved to the file.\n");

    return 0;
}