完整代码块展示:
#include <stdio.h> #include <stdlib.h> #include <string.h> struct student_information { char name[10]; char stu_ID[20]; char sex[10]; char class_[10]; char score[20]; }s[10],a[10]; int main() { system("color E1");//改变cmd窗口颜色及前景色 //建立含有十个人名字的二维数组 char name1[10][200] = { {"伊杰"},{"张三"},{"李四"},{"漆靖"},{"绍杰"},{"曾纪"},{"省龙"},{"许慎"},{"赵五"},{"欧阳"} }; int i, n; char item[100] = { "学号 性别 班级 线代成绩" }; for (i = 0;i < 10;i++) { strcpy(s[i].name, name1[i]); strcat(name1[i], ".txt");//使创建的文件为txt格式 } FILE* fp;//创建并打开以姓名命名的文件文档,并检查打开是否成功 for (i = 0;i < 10;i++) { if (( fp = fopen(name1[i],"w+")) == NULL ) { printf("file can not open!"); exit(0); } fprintf(fp, "%s", item);//第一行依次录入 学号 性别 班级 线代成绩 if (fclose(fp)) { printf("file close error!");//关闭文件并检验 exit(0); } } printf(" ##################################################### \n"); printf(" \n"); printf(" 学生信息管理系统 \n"); printf(" 欢迎您的使用! \n"); printf(" 请按任意键继续 \n"); printf(" \n"); printf(" ***************************************************** \n"); system("pause"); system("cls"); printf("请按:学号 性别 班级 线代成绩的顺序依次录入相关信息"); for (i = 0;i < 10;i++) { printf("\n%s: ", s[i].name); scanf("%s %s %s %s", s[i].stu_ID, s[i].sex, s[i].class_, s[i].score);//按顺序依次录入学生信息 if ((fp = fopen(name1[i], "a+")) == NULL) { printf("file open error!"); exit(0); } fprintf(fp, "\n%s %s %s %s",s[i].stu_ID, s[i].sex, s[i].class_, s[i].score); fclose(fp); } printf("录入成功\n"); system("pause");//使程序在此暂停 system("cls");//清屏 printf(" 下面请查看录入的学生成绩 \n"); for (i = 0;i < 10;i++) { if ((fp = fopen(name1[i], "a+")) == NULL) { printf("file open error!"); exit(0); } fscanf(fp, "%*[^\n]");//读取文件时跳过第一行 fscanf(fp, "%s %s %s %s",a[i].stu_ID, a[i].sex, a[i].class_, a[i].score);//按顺序依次读取文件内容 fclose(fp); } for (i = 0;i < 10;i++) { printf("%s: %s %s %s %s\n", s[i].name,a[i].stu_ID,a[i].sex,a[i].class_,a[i].score);//输出学生相关信息 } return 0; }
任务一:
创建十个以姓名命名的文件文档
#include <stdio.h> #include <stdlib.h> #include <string.h> struct student_information { char name[10]; char stu_ID[20]; char sex[10]; char class_[10]; char score[20]; }s[10],a[10]; int main() { system("color E1");//改变cmd窗口颜色及前景色 //建立含有十个人名字的二维数组 char name1[10][200] = { {"伊杰"},{"张三"},{"李四"},{"漆靖"},{"绍杰"},{"曾纪"},{"省龙"},{"许慎"},{"赵五"},{"欧阳"} }; int i, n; char item[100] = { "学号 性别 班级 线代成绩" }; for (i = 0;i < 10;i++) { strcpy(s[i].name, name1[i]); strcat(name1[i], ".txt");//使创建的文件为txt格式 } FILE* fp;//创建并打开以姓名命名的文件文档,并检查打开是否成功 for (i = 0;i < 10;i++) { if (( fp = fopen(name1[i],"w+")) == NULL ) { printf("file can not open!"); exit(0); } fprintf(fp, "%s", item);//第一行依次录入 学号 性别 班级 线代成绩 if (fclose(fp)) { printf("file close error!");//关闭文件并检验 exit(0); } }
任务二:
用文件写入每个人的学号,性别,班级,线代成绩
printf(" ##################################################### \n"); printf(" \n"); printf(" 学生信息管理系统 \n"); printf(" 欢迎您的使用! \n"); printf(" 请按任意键继续 \n"); printf(" \n"); printf(" ***************************************************** \n"); system("pause"); system("cls"); printf("请按:学号 性别 班级 线代成绩的顺序依次录入相关信息"); for (i = 0;i < 10;i++) { printf("\n%s: ", s[i].name); scanf("%s %s %s %s", s[i].stu_ID, s[i].sex, s[i].class_, s[i].score);//按顺序依次录入学生信息 if ((fp = fopen(name1[i], "a+")) == NULL) { printf("file open error!"); exit(0); } fprintf(fp, "\n%s %s %s %s",s[i].stu_ID, s[i].sex, s[i].class_, s[i].score); fclose(fp); } printf("录入成功\n"); system("pause");//使程序在此暂停 system("cls");//清屏
任务三:
用文件读取相关信息,并将其放在数组中
printf(" 下面请查看录入的学生成绩 \n"); for (i = 0;i < 10;i++) { if ((fp = fopen(name1[i], "a+")) == NULL) { printf("file open error!"); exit(0); } fscanf(fp, "%*[^\n]");//读取文件时跳过第一行 fscanf(fp, "%s %s %s %s",a[i].stu_ID, a[i].sex, a[i].class_, a[i].score);//按顺序依次读取文件内容 fclose(fp); } for (i = 0;i < 10;i++) { printf("%s: %s %s %s %s\n", s[i].name,a[i].stu_ID,a[i].sex,a[i].class_,a[i].score);//输出学生相关信息 } return 0; }
任务四:
在网上查找并使用了一些system函数
system类函数:
system("cls"):清屏,适当使用使程序界面整洁。
system("color xy"):改变cmd窗口背景色与前景色,x对应前景色,y对应背景色;具体颜色代码如下:
0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色
system("pause"):冻结屏幕,便于观察程序的执行结果;
system("date"):显示或设置日期。
system("mode con cols=x lines=y"):设置窗口高度宽度,x为高度,y为宽度。
system("title 标题");//设置cmd窗口标题
总结:
刚开始看到文件操作时,几乎都不知道怎么下手,后来靠看网课,查百度逐步掌握了一些文件操作。
1、学会了一些文件基本操作,如"w","a"等,最后一定要记得关闭文件。
2、学会了一些system命令,使得程序界面更美观、简洁。
3、通过这次作业,我感受到了自主学习的重要性,多学多练,才能提高水平。