C语言文件
代码块:
#include<stdio.h> #include<string.h> #include<stdlib.h> struct student_information { char name[10]; char student_ID[20]; char sex[10]; int score; char class_[10]; }s[10]; int main() { char Name[256][256]={ {"c:\\abc\\漆靖"},{"c:\\abc\\何东"},{"c:\\abc\\黄思坡"},{"c:\\abc\\宋鸿森"},{"c:\\abc\\陈婷"}, {"c:\\abc\\李心雨"},{"c:\\abc\\熊省"},{"c:\\abc\\若见花"},{"c:\\abc\\许颖"},{"c:\\abc\\刘雅"} }; //建立一个含有十个人名字的数组; int i; char item[100]={"姓名 学号 性别 班级 线性代数成绩 "}; for(i=0;i<10;i++){ strcat(s[i].name,Name[i]); strcat(Name[i],".txt"); //使创建的文件为txt格式; FILE *fp; if((fp=fopen(Name[i],"w+"))==NULL){ //创建并打开以姓名命名的文本文档, 并检验是否打开成功; printf("File open error!"); exit(0); } fprintf(fp,"%s",item); if(fclose(fp)){ //关闭文件; printf("Can not close the file!"); exit(0); } } for(i=0;i<10;i++){ strcpy(s[i].name,s[i].name+7); } system("color 7D"); printf("【 简易学生成绩管理系统 】\n"); printf("【 】\n"); printf("【 欢迎使用本系统! 】\n"); printf("【 】\n"); system("pause"); system("cls"); printf(" 请按学生姓名依次录入学号 性别 班级 线性代数成绩 (注意录入的数据间要有空格)\n"); for(i=0;i<10;i++){ printf("%-8s",s[i].name); scanf("%s %s %s %d",&s[i].student_ID,s[i].sex,s[i].class_,&s[i].score); FILE *tp; tp=fopen(Name[i],"a+"); fprintf(tp,"\n%-10s%s %s %s %d\n",s[i].name,s[i].student_ID,s[i].sex,s[i].class_,s[i].score); //格式化方式向文件内写入信息; } printf("录入完成\n"); system("pause"); //使程序在此暂停; system("cls"); //清屏; printf(" 下面查看录入的学生信息\n"); system("pause"); for(i=0;i<10;i++){ FILE *tp; if((tp=fopen(Name[i],"a+"))==NULL)printf("error!"); fscanf(tp,"%*[^\n]"); //读取文件内容时跳过第一行; fscanf(tp,"%s%s%s%s%d",s[i].name,s[i].student_ID,s[i].sex,&s[i].class_,&s[i].score); if(fclose(tp))printf("error!"); } for(i=0;i<10;i++) printf("%-8s %s %s %s %d\n",s[i].name,s[i].student_ID,s[i].sex,s[i].class_,s[i].score); //输出录入的内容; printf("感谢您的使用!\n"); }
任务一:
char Name[256][256]={ {"c:\\abc\\漆靖"},{"c:\\abc\\何东"},{"c:\\abc\\黄思坡"},{"c:\\abc\\宋鸿森"},{"c:\\abc\\陈婷"}, {"c:\\abc\\李心雨"},{"c:\\abc\\熊省"},{"c:\\abc\\若见花"},{"c:\\abc\\许颖"},{"c:\\abc\\刘雅"} }; //建立一个含有十个人名字的数组; int i; char item[100]={"姓名 学号 性别 班级 线性代数成绩 "}; for(i=0;i<10;i++){ strcat(s[i].name,Name[i]); strcat(Name[i],".txt"); //使创建的文件为txt格式; FILE *fp; if((fp=fopen(Name[i],"w+"))==NULL){ //创建并打开以姓名命名的文本文档, 并检验是否打开成功; printf("File open error!"); exit(0); } fprintf(fp,"%s",item); if(fclose(fp)){ //关闭文件; printf("Can not close the file!"); exit(0); } } for(i=0;i<10;i++){ strcpy(s[i].name,s[i].name+7);
依据一个含有十个人姓名的字符串数组,分别创建以其姓名命名创TXT文件,运行结果如下图:(过程见图中注释)
任务二:
printf(" 请按学生姓名依次录入学号 性别 班级 线性代数成绩 (注意录入的数据间要有空格)\n"); for(i=0;i<10;i++){ printf("%-8s",s[i].name); scanf("%s %s %s %d",&s[i].student_ID,s[i].sex,s[i].class_,&s[i].score); FILE *tp; tp=fopen(Name[i],"a+"); fprintf(tp,"\n%-10s%s %s %s %d\n",s[i].name,s[i].student_ID,s[i].sex,s[i].class_,s[i].score); //格式化方式向文件内写入信息; } printf("录入完成\n"); system("pause"); //使程序在此暂停; system("cls"); //清屏;
按姓名依次输入学号、性别、班级、线性代数成绩。(详细见注释)
运行过程如下图:
任务三:
printf(" 下面查看录入的学生信息\n"); system("pause"); for(i=0;i<10;i++){ FILE *tp; if((tp=fopen(Name[i],"a+"))==NULL)printf("error!"); fscanf(tp,"%*[^\n]"); //读取文件内容时跳过第一行; fscanf(tp,"%s%s%s%s%d",s[i].name,s[i].student_ID,s[i].sex,&s[i].class_,&s[i].score); if(fclose(tp))printf("error!"); } for(i=0;i<10;i++) printf("%-8s %s %s %s %d\n",s[i].name,s[i].student_ID,s[i].sex,s[i].class_,s[i].score); //输出录入的内容; printf("感谢您的使用!\n");
将任务二中录入文件中的数据通过fscanf函数读取数据到结构数组中,并输出到屏幕上。(具体见注释)
结果如下:
任务四:
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窗口标题