第三次博客园作业
C语言文件
任务一:
你现在拥有一个数组,数组中储存着总共10个人的姓名字符串
你需要为每个人创建一个txt文件,以他们的名字命名。
例如: 生成 笨笨.txt文件
#include<stdio.h>
#include<string.h>
int main() {
int i;
char name[10][10] = { "贤贤","劢劢","兆兆","航航","水水","涛涛","晗晗","晟晟","卡卡","炜炜" };//定义十个文件名
FILE* fp;
for (i = 0; i < 10; i++)
{
strcat_s(name[i], ".txt"); //将文件格式设置为txt文本文档模式
fp = fopen(name[i], "w"); //w打开只写文件,如果没有文件则新建一个,如果有则会清空原有内容
if ((fp = fopen(name[i], "r+")) == NULL)
{
printf("打开文件失败!\n");
}
if (fclose(fp))
printf("关闭文件失败!\n");
}
return 0;
}
运行截图
任务二:
在任务一的基础上,这次不仅仅要创建txt文件,还需要往文件中写入
每个人的学号,性别,班级,线代成绩
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student {
char Name[20];
char Sex[20];
char Class[20];
char Number[20];
char Score[20];
};
int main()
{
system("color 9F");//改变界面和字体颜色
int i;
char name[10][10] = {"贤贤","劢劢","兆兆","航航","水水","涛涛","晗晗","晟晟","卡卡","炜炜"};
struct student stu[20];
FILE* fp;
printf("姓名 学号 性别 班级 线代成绩\n");//只在第一行输出,方便输入
for (i = 0; i < 10; i++)
{
printf("%s ", name[i]);//自动输出需要录入信息的学生名称
strcpy(stu[i].Name, name[i]);//因为之后name[]中学生名称会带有.txt后缀,利用结构保存原来的名称
strcat(name[i], ".txt");
fp = fopen(name[i], "w");
if ((fp = fopen(name[i], "r+")) == NULL)
{
printf("打开文件失败!\n");
exit(0);
}
scanf("%s %s %s %s", stu[i].Number, stu[i].Sex, stu[i].Class, stu[i].Score);
fprintf(fp, "%s %s %s %s %s",stu[i].Name,stu[i].Number,stu[i].Sex,stu[i].Class, stu[i].Score);
if (fclose(fp))
printf("关闭文件失败!\n");
}
printf("添加成功!");
return 0;
}
运行截图
任务三:
在任务二生成的文件中,将每个人的信息再重新读取出来,放入数组中。
[要求使用结构体数组,结构体需要包含姓名,学号,性别,班级,线代成绩5个属性]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student {
char Name[20];
char Sex[20];
char Class[20];
char Number[20];
char Score[20];
};
int main()
{
system("color 9F");
int i;
char name[10][10] = { "贤贤","劢劢","兆兆","航航","水水","涛涛","晗晗","晟晟","卡卡","炜炜" };
struct student stu[20];
FILE* fp;
printf("姓名 学号 性别 班级 线代成绩\n");
for (i = 0; i < 10; i++)
{
strcpy(stu[i].Name, name[i]);
strcat(name[i], ".txt");
fp = fopen(name[i], "r");//对文件只读
if ((fp = fopen(name[i], "r+")) == NULL)
{
printf("打开文件失败!\n");
exit(0);
}
fscanf(fp, "%s %s %s %s", stu[i].Number, stu[i].Sex, stu[i].Class, stu[i].Score);
if (fclose(fp))
printf("关闭文件失败!\n");
}
for (i = 0; i < 10; i++) {
printf("%s %s %s %s %s\n", stu[i].Number, stu[i].Sex, stu[i].Class, stu[i].Score); //输出数组中的信息
}
return 0;
}
运行截图
任务四:
试着使用一下 system("cls"),system("pause") 这两个命令,看看这两个
命令能不能对你的程序起到一些美化的作用。
拓展:上网搜索类似的其他函数,使用并解释他们的作用。
【想找几个是几个】
system("cls")//清屏命令
system("pause")//暂停命令
将写入和读取两部分合并一起时可以用到system("pause")和system("cls")的命令暂停一会后清空写入过程屏幕,然后输出读取结果使界面更加美观
system("color")函数可以改变控制台的前景色和背景
背景色 0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色
字体色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色
遇到的问题
读取时进行fopen操作的时候用的是"w"而不是"r"导致文件内容被清空读取完后出现一堆的"烫"QAQ
心得体会
学习了文件的打开关闭写入读取的基本操作
学会了利用system函数美化自己的程序