文件之间的输入输出
编写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); /*关闭文件*/
}