c语言文件
任务1
你现在拥有一个数组,数组中储存着总共10个人的姓名字符串
你需要为每个人创建一个txt文件,以他们的名字命名。
生成效果如下
代码如下
#include<stdio.h> int main() { FILE* fp; char name[10][20] = { "宋林涛","黄力强","陈汉煜","张旭","李龙生","蔡泓顺","郝冰冰","茅志雄","雷雯雯","朱仕岳" }; int i; for (i = 0;i < 10;i++) { sprintf(name[i], "%s.txt", name[i]); fp = fopen(name[i], "w"); if (fp == NULL) { break; } fclose(fp); } return 0; }
任务2
在任务一的基础上,这次不仅仅要创建txt文件,还需要往文件中写入
每个人的学号,性别,班级,线代成绩
生成效果如下
代码如下
#include<stdio.h> struct stu { char id[100]; char name[30]; char grade[10]; char sex[10]; char Class[10]; }s1[100]; int main() { FILE* fp; char name[10][20] = { "宋林涛","黄力强","陈汉煜","张旭","李龙生","蔡泓顺","郝冰冰","茅志雄","雷雯雯","朱仕岳" }; int i; for (i = 0;i < 10;i++) { sprintf(name[i], "%s.txt", name[i]); fp = fopen(name[i], "w+"); scanf("%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); fprintf(fp, "%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); fclose(fp); } return 0; }
任务3
在任务二生成的文件中,将每个人的信息再重新读取出来,放入数组中。
[要求使用结构体数组,结构体需要包含姓名,学号,性别,班级,线代成绩5个属性]
生成效果如下
代码如下
#include<stdio.h> #include<string.h> #include<stdlib.h> struct stu { char id[100]; char name[30]; char grade[10]; char sex[10]; char Class[10]; }s1[100]; int main() { FILE* fp; char name[100][20] = { "宋林涛","黄力强","陈汉煜","张旭","李龙生","蔡泓顺","郝冰冰","茅志雄","雷雯雯","朱仕岳" }; char name2[100][20] = { "宋林涛","黄力强","陈汉煜","张旭","李龙生","蔡泓顺","郝冰冰","茅志雄","雷雯雯","朱仕岳" }; int i; for (i = 0;i < 10;i++) { sprintf(name[i], "%s.txt", name[i]); //fp = fopen(name[i], "w+"); //scanf("%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); //fprintf(fp, "%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); //fclose(fp); } system("cls"); for (i = 0;i < 10;i++) { if ((fp = fopen(name[i], "r")) == NULL) { printf("File open error"); exit(0); } while (!feof(fp)) { fscanf(fp, "%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); } strcpy(s1[i].name, name2[i]); printf("%s\t%s\t%s\t%s\t%s\n", s1[i].name,s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); } fclose(fp); return 0; }
任务四:
试着使用一下system("cls"),system("pause")这两个命令,看看这两个
命令能不能对你的程序起到一些美化的作用。
对程序的美化
最终的运行效果如下
代码如下
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> struct stu { char id[100]; char name[30]; char grade[10]; char sex[10]; char Class[10]; }s1[100]; int main() { system("color E1"); FILE* fp; char name[100][20] = { "宋林涛","黄力强","陈汉煜","张旭","李龙生","蔡泓顺","郝冰冰","茅志雄","雷雯雯","朱仕岳" }; char name2[100][20] = { "宋林涛","黄力强","陈汉煜","张旭","李龙生","蔡泓顺","郝冰冰","茅志雄","雷雯雯","朱仕岳" }; int i; printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━┓ \n"); printf(" ┃ 学生管理系统 ┃ \n"); printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━┫ \n"); printf(" ┃ 欢迎使用 ┃ \n"); printf(" ┃ 按任意键继续 ┃ \n"); printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━┛ \n"); system("pause"); system("cls"); printf("请依次输入\n"); printf("学号 性别 班级 线代成绩\n"); for (i = 0;i < 10;i++) { sprintf(name[i], "%s.txt", name[i]); fp = fopen(name[i], "w+"); scanf("%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); fprintf(fp, "%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); fclose(fp); } system("pause"); system("cls"); printf("查看学生成绩\n"); system("pause"); system("cls"); printf("学生成绩如下\n"); for (i = 0;i < 10;i++) { if ((fp = fopen(name[i], "r")) == NULL) { printf("File open error"); exit(0); } while (!feof(fp)) { fscanf(fp, "%s %s %s %s", s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); } strcpy(s1[i].name, name2[i]); printf("%s\t%s\t%s\t%s\t%s\n", s1[i].name,s1[i].id, s1[i].sex, s1[i].Class, s1[i].grade); } system("pause"); system("cls"); printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━┓ \n"); printf(" ┃ 学生管理系统 ┃ \n"); printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━┫ \n"); printf(" ┃ 感谢使用 ┃ \n"); printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━┛ \n"); Sleep(3000); fclose(fp); return 0; }
总结
1.对system函数的了解
要引入头文件include<windows.h>
system("cls");清屏
system("pause");暂停程序,按任意键继续
system ("color ab")改变界面的背景色和字体颜色,前面的为背景色,后面的为字体颜色。
- 0=黑色 8=灰色
- 1=蓝色 9=淡蓝色
- 2=绿色 10=淡绿色
- 3=湖蓝色 11=淡浅绿色
- 4=红色 12=淡红色
- 5=紫色 13=淡紫色
- 6=黄色 14=淡黄色
- 7=白色 15=亮白色
system(“ shutdown -s -t ”) 可以让电脑关机
2.了解了文件的一些处理方法,以及各种函数的格式及使用他们的情况。
3.对文件的操作有了一定了解
注意到打开文件后一定要关闭文件,否则会报错,进而了解到文件打开后,可能有一些操作被缓冲在内存中,若不正常关闭,缓冲在内存中的数据就不能真正写入到文件中,可能造成数据丢失。
来源:https://www.cnblogs.com/song0820/p/12055506.html