• C语言文件


    任务一:

    你现在拥有一个数组,数组中储存着总共10个人的姓名字符串
    你需要为每个人创建一个txt文件,以他们的名字命名。
    例如: 生成 笨笨.txt文件
    代码展示:

    
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;//定义文件指针(必须要指针)
    	int i;
    	char name_classmates[10][20] = { "画眉","夜鹰","鸬鹚","织布鸟","白头翁","白鹭","翠鸟","雕鸮","蜂鸟","海雕" };//十个字符串名字
    	for (i = 0; i < 10; i++) {
    		strcat(name_classmates[i], ".txt");//txt文件后缀
    		if ((fp = fopen(name_classmates[i], "w")) == NULL) {
    			printf("%s file open error!
    ",name_classmates[i]);
    			exit(0);//防止异常,关闭流
    		}//逐个建立文件
    		if (fclose(fp)) {
    			printf("close the file
    ");
    			exit(0);
    		}
    	}
    	return 0;
    }
    

    运行结果:


    任务二:

    在任务一的基础上,这次不仅仅要创建txt文件,还需要往文件中写入
    每个人的学号,性别,班级,线代成绩
    代码展示:

    
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define N 100
    #define V 10
    int main() {
    
    	system("color F9");
    	char number[V][N];//学号
    	char sex[V][N];//性别
    	char classes[V][N];//班级
    	char score[V][N];//分数
    	FILE* fp;
    	int i;
    	char name_classmates[10][20] = { "画眉","夜鹰","鸬鹚","织布鸟","白头翁","白鹭","翠鸟","雕鸮","蜂鸟","海雕" };
    	for (i = 0; i < 10; i++) {
    		strcat(name_classmates[i], ".txt");
    		fp = fopen(name_classmates[i], "w");
    		if (fp)
    		{
    			printf("请输入学生%s的性别:       ", name_classmates[i]);
    			scanf("%s", sex[i]);
    			printf("请输入学生%s的学号:       ",name_classmates[i]);
    			scanf("%s", number[i]);
    			printf("请输入学生%s的班级:       ", name_classmates[i]);
    			scanf("%s", classes[i]);
    			printf("请输入学生%s的分数:       ", name_classmates[i]);
    			scanf("%s", score[i]);
    			fputs(number[i], fp);
    			fprintf(fp, "  ");
    			fputs(sex[i], fp);
    			fprintf(fp, "  ");
    			fputs(classes[i], fp);
    			fprintf(fp, "  ");
    			fputs(score[i], fp);
    			printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    ");
    			if (i != 0&&i % 2 == 0)
    			{
    				system("cls");
    				system("pause");
    			}
    			fclose(fp);//关闭文件
    		}
    		else
    		{
    			printf("File open fail.
    ");
    			break;
    		}
    	}
    	return 0;
    }
    

    运行结果截图



    任务三:

    在任务二生成的文件中,将每个人的信息再重新读取出来,放入数组中。
    [要求使用结构体数组,结构体需要包含姓名,学号,性别,班级,线代成绩5个属性]
    代码展示

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define N 100
    #define V 10
    struct student
    {
    	char name[N];//名字
    	char number[N];//学号
    	char sex[N];//性别
    	char score[N];//分数
    	char classes[N];//班级
    }stu[10];
    int main() {
    
    	system("color F9");
    	FILE* fp;
    	int i;
    	char name_classmates[10][20] = { "画眉","夜鹰","鸬鹚","织布鸟","白头翁","白鹭","翠鸟","雕鸮","蜂鸟","海雕" };
    	for (i = 0; i < 10; i++) 
    	{
    		strcpy(stu[i].name, name_classmates[i]);
    		strcat(name_classmates[i], ".txt");
    		fp = fopen(name_classmates[i], "r");
    		if (fp)
    		{
    			fscanf(fp, "%s %s %s %s", stu[i].number, stu[i].sex, stu[i].classes, stu[i].score);//读取文件内容并放入结构体中
    			fclose(fp);
    		}
    	
    		else
    		{
    			printf("File open fail.
    ");
    			break;
    		}
    	
    	}
    	for (i = 0;i < 10;i++)
    		{
    			printf("%s %s %s %s %s
    
    ", stu[i].name, stu[i].number, stu[i].sex, stu[i].classes, stu[i].score);
    
    		}
    	return 0;
    }
    

    运行结果截图


    任务四:

    试着使用一下system("cls"),system("pause")这两个命令,看看这两个
    命令能不能对你的程序起到一些美化的作用。
    拓展:上网搜索类似的其他函数,使用并解释他们的作用。

    1. system("CLS")可以实现清屏操作;
    2. system("pause")可以实现冻结屏幕,便于观察程序的执行结果;
    3. 用 system("color 0A"); 其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:
      0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

    五.小结

    通过这次大作业,我对文件有了以下初步的了解:
    - fopen(),fclose函数是用来打开和关闭文件的,若打开失败,就会返回NULL,函数里放的是打开的文件路径或文件名,参数mode字符串代表流行态。

    形态字符串 特点
    r 以只读的方式打开文件,该文件必须存在
    r+ r+以可读写方式打开,该文件必须存在
    a+ 打开读写文件文件不存在,则新建,存在。写入的数据会被加到文件尾后,文件原先内容会被保留(原来的EOF不保留)
    rw+ rw+读写打开一个文本文件,允许读和写
    w w打开只写文件,若文件存在则文件长度轻为0,则该文件内容会消失,若文件不存在,则建立该文件
    w+ a以附加方式打开只写文件,若文件存在,则文件长度会被清零,文件内容会消失
    a 以附加的方式打开只写文件,若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后(原来的EOF符保留)
    at+ 打开一个叫string的文件,a表示append,写入处理的时候接着原有文件写入,t表示打开文本文件,+表示可读写
    wb 只写打开或新建一个二进制文件。只允许写数据
    wb+ 读写打开或建立一个二进制文件。允许读和写
    ab+ 读写打开一个二进制文件,允许读或在文件末追加数据
    rb+ rb+读写打开一个二进制文件,允许读写数据

    上述的形态字符串都可以再加一个b字符,如
    rb,w+b或ab+等组合,加入b字符用来告诉函数以二进制模式打开文件,如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。
    - 格式化方式读写文件:fscanf()函数和fprintf()函数

    定义:
    fscanf(文件指针,格式字符串,输入表);
    fprintf(文件指针,格式字符串,输入表)
    

    - 字符方式读写文件:fgetc(),fputc(),用于复制文件
    - 字符串方式文件读写函数fgets()fputs()

    作用:
    fputs()函数用来向指定的文本文件写入一个字符串
    fgets()从文本文件中读取字符串
    格式:
    fputs(s,fp);
    fgets(s,n,fp);//n是指定读入字符的个数 
    
  • 相关阅读:
    C# Trace 信息写入日志文件
    C# 获取操作系统版本和Service Pack版本的方法
    C# 控制系统服务
    log4net记录日志过程中一直占用日志文件的解决方法
    FileStream类学习小结
    Centos7 部署.net core2.1 详细步骤
    linux 安装redis 完整步骤
    Asp.Net Core Linux环境下 找不到配置文件、静态文件的问题
    关于Clipboard剪切板获取值为NULL问题解决方法
    STA和MTA线程模式的区别
  • 原文地址:https://www.cnblogs.com/599-/p/12076805.html
Copyright © 2020-2023  润新知