IO进程--day1

一、定义学生结构体

  1. 学生信息:学号,姓名,成绩等
  2. 编写2个函数 save_stu 和 load_stu save_stu
  3. 通过 fprintf 将arr数组中的3个学生的所有信息,保存到文件中去 load_stu
  4. 通过 fscanf 将文件中的3个学生的所有信息,读取到一个新的结构体数组中,并输出所有学生的信息
#include <stdio.h>  
#include <stdlib.h>  
  
// 学生结构体  
typedef struct Student
{  
    int id;  
    char name[20];  
    double chinese; // 语文成绩  
    double math;  
    double english;  
    double physical;  
    double chemical;  
    double biological;  
} stu_t;  
  
// 函数声明  
void save_stu(stu_t arr[], int size);  
void load_stu(stu_t arr[], stu_t *brr, int size);  
  
int main(int argc, const char *argv[])
{  
    stu_t arr[3] = {  
        {101, "小张", 99, 88, 87, 90, 89, 77},  
        {102, "小杨", 88, 90, 78, 69, 90, 89},  
        {103, "小李", 97, 89, 78, 80, 78, 86}  
    };  
    save_stu(arr, 3);  
    stu_t brr[3]; // 定义新数组brr,用于存储的学生数据  
    load_stu(arr, brr, 3); // 注意传递brr的地址和大小  
  
    // 打印加载的数据以验证  
    for (int i = 0; i < 3; i++)
	{  
        printf("学号:%d 姓名:%s 语文:%.2lf 数学:%.2lf 英语:%.2lf 物理:%.2lf 化学:%.2lf 生物:%.2lf\n",  brr[i].id, brr[i].name, brr[i].chinese, brr[i].math, brr[i].english, brr[i].physical, brr[i].chemical, brr[i].biological);  
    }  
    return 0;  
}  

//保存数组信息到文件f1中
void save_stu(stu_t arr[], int size)
{  
    FILE *f1 = fopen("3.txt", "a"); // 创建文件,使用追加模式 a
    if (f1 == NULL)
	{  
        perror("打开文件失败");  
        return;  
    }  
    for (int i = 0; i < size; i++)     //将数组arr的信息保存到文件中
	{  
        fprintf(f1, "学号:%d 姓名:%s 语文:%.2lf 数学:%.2lf 英语:%.2lf 物理:%.2lf 化学:%.2lf 生物:%.2lf\n",  arr[i].id, arr[i].name, arr[i].chinese, arr[i].math, arr[i].english, arr[i].physical, arr[i].chemical, arr[i].biological);  
    }  
    fclose(f1); // 关闭文件  
}  
  
//将文件的信息读取到新数组内
void load_stu(stu_t arr[], stu_t brr[], int size)
{  
    FILE *f1 = fopen("3.txt", "r");  
    if (f1 == NULL) 
	{  
        perror("打开文件失败");  
        return;  
    }  
    for (int i = 0; i < size && !feof(f1); i++)
	{  
        fscanf(f1, "学号:%d\t 姓名:%s\t 语文:%lf\t 数学:%lf\t 英语:%lf\t 物理:%lf\t 化学:%lf\t 生物:%lf\n",  &brr[i].id, brr[i].name, &brr[i].chinese, &brr[i].math, &brr[i].english, &brr[i].physical, &brr[i].chemical, &brr[i].biological);  
    }  
    fclose(f1);  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值