编写2个函数:save stu 和 load stu
save stu:通过 fprintf 将arr数组中的3个学生的所有信息,保存到文件中去
load stu:通过 fscanf 将文件中的3个学生的所有信息,读取到一个新的结构体数组中,并输出所有学生的信息
#include <myhead.h>
/*创建学生结构体*/
typedef struct Student{
char name[20];
int id;
double Chinese;
double math;
double English;
double physical;
double chemical;
double biological;
}stu_t;
/*函数声明*/
//1、输入学生信息
void input_message(stu_t *arr);
//2、将学生信息保存到文件中
void save_stu(stu_t *arr);
//3、将文件中学生的信息存入新数组,并输出
void load_stu(stu_t *new);
int main(int argc, const char *argv[])
{
stu_t arr[3] = {0}; /*定义学生数组*/
input_message(arr); /*调用输入函数*/
save_stu(arr); /*调用保存信息到文件函数*/
stu_t new[3] = {0}; /*创建新的数组*/
load_stu(new); /*调用将信息存入新数组并输出函数*/
return 0;
}
//1、输入学生信息
void input_message(stu_t *arr)
{
printf("请输入学生信息:\n");
for(int i=0; i<3; i++){
printf("请输入第%d个学生姓名:",i+1);
scanf("%s", arr[i].name);
printf("请输入第%d个学生学号:",i+1);
scanf("%d", &arr[i].id);
printf("请输入第%d个学生成绩:\n",i+1);
printf("语文:");
scanf("%lf", &arr[i].Chinese);
printf("数学:");
scanf("%lf", &arr[i].math);
printf("英语:");
scanf("%lf", &arr[i].English);
printf("物理:");
scanf("%lf", &arr[i].physical);
printf("化学:");
scanf("%lf", &arr[i].chemical);
printf("生物:");
scanf("%lf", &arr[i].biological);
}
}
//2、将学生信息保存到文件中
void save_stu(stu_t *arr)
{
FILE * fp = fopen("stu.txt" , "w"); /*打开文件*/
/*判断打开是否成功*/
if(NULL==fp){
perror("fopen错误:");
return;
}
/*输出到文件中*/
for(int i=0; i<3; i++){
fprintf(fp, "%s\t", arr[i].name);
fprintf(fp, "%d\n", arr[i].id);
fprintf(fp, "%.2lf\t", arr[i].Chinese);
fprintf(fp, "%.2lf\t", arr[i].math);
fprintf(fp, "%.2lf\n", arr[i].English);
fprintf(fp, "%.2lf\t", arr[i].physical);
fprintf(fp, "%.2lf\t", arr[i].chemical);
fprintf(fp, "%.2lf\n", arr[i].biological);
}
fclose(fp); /*关闭文件*/
}
//3、将文件中学生的信息存入新数组,并输出
void load_stu(stu_t *new){
FILE *fp = fopen("stu.txt", "r"); /*打开文件*/
/*判断打开是否成功*/
if(NULL==fp){
perror("fopen错误:");
return;
}
/*输入到新数组*/
for(int i=0; i<3; i++){
fscanf(fp, "%s", new[i].name);
fscanf(fp, "%d", &new[i].id);
fscanf(fp, "%lf", &new[i].Chinese);
fscanf(fp, "%lf", &new[i].math);
fscanf(fp, "%lf", &new[i].English);
fscanf(fp, "%lf", &new[i].physical);
fscanf(fp, "%lf", &new[i].chemical);
fscanf(fp, "%lf", &new[i].biological);
}
printf("=====学生信息=====\n");
for(int i=0; i<3; i++){
printf("姓名:%s\t", new[i].name);
printf("学号:%d\n", new[i].id);
printf("成绩:\n");
printf("语文:%.2lf\t", new[i].Chinese);
printf("数学:%.2lf\t", new[i].math);
printf("英语:%.2lf\n", new[i].English);
printf("物理:%.2lf\t", new[i].physical);
printf("化学:%.2lf\t", new[i].chemical);
printf("生物:%.2lf\n", new[i].biological);
}
fclose(fp); /*关闭文件*/
}