一、定义学生结构体
- 学生信息:学号,姓名,成绩等
- 编写2个函数 save_stu 和 load_stu save_stu
- 通过 fprintf 将arr数组中的3个学生的所有信息,保存到文件中去 load_stu
- 通过 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);
}
标签:f1,arr,%.,--,2lf,brr,day1,stu,IO
From: https://blog.csdn.net/m0_74933801/article/details/142861687