c语言文件

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")改变界面的背景色和字体颜色,前面的为背景色,后面的为字体颜色。

  1. ​ 0=黑色 8=灰色  
  2. ​ 1=蓝色 9=淡蓝色   
  3. 2=绿色 10=淡绿色   
  4. 3=湖蓝色 11=淡浅绿色  
  5. 4=红色 12=淡红色   
  6. 5=紫色 13=淡紫色   
  7. 6=黄色 14=淡黄色   
  8. 7=白色 15=亮白色

system(“ shutdown -s -t ”) 可以让电脑关机

2.了解了文件的一些处理方法,以及各种函数的格式及使用他们的情况。
3.对文件的操作有了一定了解

注意到打开文件后一定要关闭文件,否则会报错,进而了解到文件打开后,可能有一些操作被缓冲在内存中,若不正常关闭,缓冲在内存中的数据就不能真正写入到文件中,可能造成数据丢失。

posted @ 2019-12-21 10:58  宋林涛  阅读(158)  评论(0编辑  收藏  举报