c语言文件操作
一、c语言文件——任务
任务一:
你现在拥有一个数组,数组中储存着总共10个人的姓名字符串你需要为每个人创建一个txt文件,以他们的名字命名。例如: 生成 笨笨.txt文件
任务二:
在任务一的基础上,这次不仅仅要创建txt文件,还需要往文件中写入,每个人的学号,性别,班级,线代成绩。
任务三:
在任务二生成的文件中,将每个人的信息再重新读取出来,放入数组中。[要求使用结构体数组,结构体需要包含姓名,学号,性别,班级,线代成绩5个属性]
任务四:
试着使用一下system("cls"),system("pause")这两个命令,看看这两个命令能不能对你的程序起到一些美化的作用。拓展:上网搜索类似的其他函数,使用并解释他们的作用。
二、c语言文件——代码
#include<stdio.h> #include<stdlib.h> #include<string.h> #define V 1000 #define N 60 #define M 45 void Start_face();//初始界面 void Mid_face_1();//控制中间界面,下同 void Mid_face_2(); void Scanf_number(int* p);//输入人数 typedef struct { int score; char number[20], gender[20], classes[20]; }STU_IN; typedef struct { int score; char name[20], number[20], gender[20], classes[20]; }STU_OUT; int main(void) { Start_face(); int stu_number, * p = &stu_number; Scanf_number(p);//输入人数 STU_IN stu1[V]; STU_OUT stu2[V],a;//变量a是排序交换时的过渡变量 FILE* fp; char name[10][20]; for (int i = 0; i < stu_number; i++) {//循环操作,输入信息并写入文件 Mid_face_1(); printf("***请输入学生信息***\n\n"); Mid_face_2(); printf("-->姓名:"); scanf("%s", name[i]); strcpy(stu2[i].name, name[i]); strcat(name[i], ".txt"); fp = fopen(name[i], "w"); if (fp == NULL) { printf("Failed to open file"); exit(0); } printf("\n"); Mid_face_2(); printf("-->学号:"); scanf("%s", stu1[i].number); printf("\n"); Mid_face_2(); printf("-->性别:"); scanf("%s", stu1[i].gender); printf("\n"); Mid_face_2(); printf("-->班级:"); scanf("%s", stu1[i].classes); printf("\n"); Mid_face_2(); printf("-->成绩:"); scanf("%d", &stu1[i].score); fprintf(fp, "%s\n", stu1[i].number); fprintf(fp, "%s\n", stu1[i].gender); fprintf(fp, "%s\n", stu1[i].classes); fprintf(fp, "%d\n", stu1[i].score); if (fclose(fp)) { printf("Can not close this file!\n"); exit(0); } printf("\n"); Mid_face_2(); system("pause"); system("cls"); } Mid_face_1(); printf("下面将为您查看所录入的信息\n\n"); Mid_face_2(); system("pause"); system("cls"); printf("\n\n\n"); for (int i = 0; i < stu_number; i++) {//循环读出信息 if ((fp = fopen(name[i], "r")) == NULL) { printf("Failed to open file"); exit(0); } fscanf(fp, "%s", stu2[i].number); fscanf(fp, "%s", stu2[i].gender); fscanf(fp, "%s", stu2[i].classes); fscanf(fp, "%d", &stu2[i].score); if (fclose(fp)) { printf("Can not close this file!\n"); exit(0); } } for (int i = 0; i < stu_number -1; i++) {//冒泡排序,对成绩降序排列输出 for (int o = 0; o < stu_number - i - 1; o++) { if (stu2[o].score < stu2[o + 1].score) { a = stu2[o]; stu2[o] = stu2[o + 1]; stu2[o + 1] = a; } } } for (int i = 0; i < stu_number; i++) {//将信息放在一个结构数组中输出 Mid_face_2(); printf("%-10s", stu2[i].name); printf("%-15s", stu2[i].number); printf("%-5s", stu2[i].gender); printf("%-10s", stu2[i].classes); printf(" 成绩:%2d\n", stu2[i].score); } system("pause"); return 0; } void Scanf_number(int *p) { Mid_face_1(); printf("您要录入信息的人数为:"); scanf("%d", p); printf("\n"); Mid_face_2(); system("pause"); system("cls"); } void Mid_face_1() { for (int o = 0; o < 10; o++) { printf("\n"); } for (int o = 0; o < M; o++) { printf(" "); } } void Mid_face_2() { for (int o = 0; o < M-9; o++) { printf(" "); } } void Start_face() { system("color fc"); printf("丨"); for (int i = 0; i < N; i++) { printf("一"); } printf("丨\n"); for (int i = 0; i < 13; i++) { printf("丨"); for (int o = 0; o <120; o++) { printf(" "); } printf("丨\n"); } printf("丨"); for (int i = 0; i < 35; i++) { printf("-"); } printf(">>>>>>>>>>欢迎进入学生信息及成绩录入系统<<<<<<<<<<"); for (int i = 0; i < 35; i++) { printf("-"); } printf("丨\n"); for (int i = 0; i < 13; i++) { printf("丨"); for (int o = 0; o <120 ; o++) { printf(" "); } printf("丨\n"); } printf("丨"); for (int i = 0; i < N; i++) { printf("一"); } printf("丨\n\n"); system("pause"); system("cls"); }
三、c语言文件——展示效果
1、初始界面
2、录入界面
3、输出界面
4、文件创建效果
三、c语言文件——总结
system("pause");//暂停程序,按任意键继续;
system("cls");//清空黑框界面;
system("color 12");//改变黑框颜色,不同数字不同颜色,0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色,其中color后面的第一个数是背景色代号,第二个数是前景色代号。