有如下结构体
struct Student{ char name[16]; int age; double math_score; double chinese_score; double english_score; double physics_score; double chemistry_score; double bio_score; };
申请该结构体数组,容量为5,初始化5个学生的信息 使用fprintf将数组中的5个学生信息,保存到文件中去 下一次程序运行的时候,使用fscanf,将文件中的5个学生信息,写入(加载)到数组中去,并直接输出学生信息。
#include <stdio.h> /*----------------将学生信息写入文件中--------*/ struct Student{ char name[16]; int age; double math_score; double chinese_score; double english_score; double physics_score; double chemistry_score; double bio_score; }; int main(int argc, const char *argv[]) { struct Student s[5]= { {"星期一",1,2,3,4,5,6,7}, {"星期二",8,9,10,11,12,13,14}, {"星期三",15,16,17,18,19,20,21}, {"星期四",22,23,24,25,26,27,28}, {"星期五",29,30,31,32,33,34,35}, }; FILE* fp = fopen("./test.txt","w"); if(fp == NULL) { printf("文件夹打开失败!\n"); return 1; } for(int i = 0; i < 5; i++) { fprintf(fp,"name:%s\t",s[i].name); fprintf(fp,"age:%d\t",s[i].age); fprintf(fp,"math_score:%lf\t",s[i].math_score); fprintf(fp,"chinese_score:%lf\t",s[i].chinese_score); fprintf(fp,"english_score:%lf\t",s[i].english_score); fprintf(fp,"physics_score:%lf\t",s[i].physics_score); fprintf(fp,"chemistry_score:%lf\t",s[i].chemistry_score); fprintf(fp,"bio_score:%lf\t",s[i].bio_score); fprintf(fp,"\n"); } fclose(fp);//关闭文件 return 0; }#include <stdio.h> /*将文件内容打印到结构体中*/ struct Student{ char name[16]; int age; double math_score; double chinese_score; double english_score; double physics_score; double chemistry_score; double bio_score; }; int main(int argc, const char *argv[]) { struct Student s[5]; FILE* fp = fopen("./test.txt","r"); if(fp == NULL) { printf("文件打开失败"); return 1; } int i=0; while(1) { fscanf(fp,"%s %d %lf %lf %lf %lf %lf %lf", &s[i].name, &s[i].age, &s[i].math_score, &s[i].chinese_score, &s[i].english_score, &s[i].physics_score, &s[i].chemistry_score, &s[i].bio_score ); if(s[i].name == EOF) { break; } printf("%s\t %d\t %lf\t %lf\t %lf\t %lf\t %lf\t %lf\t", s[i].name, s[i].age, s[i].math_score, s[i].chinese_score, s[i].english_score, s[i].physics_score, s[i].chemistry_score, s[i].bio_score); i++; } fclose(fp); return 0; }