网站设计课程总结,贵州省交通建设工程质量监督局网站,网站创建需要多少钱,wordpress图片多链接引言#xff1a;程序的本质作用之一#xff0c;就是处理数据。若仅限于从控制窗口输入#xff0c;那么是不能真正地实现处理数据#xff0c;仅是实现了数据处理的功能。当程序能够与文件结合起来时#xff0c;才真正地实现了对数据的处理。零. 文件的分类文件是指存储在外…引言程序的本质作用之一就是处理数据。若仅限于从控制窗口输入那么是不能真正地实现处理数据仅是实现了数据处理的功能。当程序能够与文件结合起来时才真正地实现了对数据的处理。零. 文件的分类文件是指存储在外部介质上的数据集合从用户角度上看文件可以分为磁盘文件和标准输入输出文件。常用的磁盘文件按照处理方法的不同又可分为缓冲文件系统和非缓冲文件系统。ANCI C常说的C语言标准例如C89重点研究缓冲文件系统。根据文件中数据的存储形式不同又可以将文件分为文本文件和二进制文件。1.磁盘文件与标准输入输出文件磁盘文件可以简单的理解为是用户拿到电脑后用户自己可以处理操作的文件而标准输入输出文件则是系统默认好的文件例如标准输入文件通常指键盘用文件指针stdin指向。standard(std)标准标准输出文件通常指显示器用文件指针stdout指向标准出错输出文件一般也指显示器用文件指针stderr指向。2.缓冲文件系统对于缓冲文件系统在每打开一个文件时系统都会在内存中自动开辟一个缓冲区缓冲区的大小不同由C语言版本决定一般为512字节。数据先被送入缓冲区待缓冲区满后再向内存或磁盘传送。3.文本文件与二进制文件程序运行处理及产生的数据都是二进制一串又一串的0与1直接想要读懂是难上加难再加难因此就有了文本文件ASCII文件或text文件将二进制数据处理后展现出来以便人们的阅读。也就是说文本文件与二进制文件仅是不同的存储方式二进制文件.bin优点①节省内存例如100在文本文件中是分做三个字符‘1’‘0’和‘0’一个字符两个字节那么至少需要6个字节而在二进制文件中若该100是int整形则仅需4个字节数据越大差距就越明显。②处理速度快上述已说文本文件是二进制通过转化的来的故可得对二进制文件的处理是直接的而对文本文件的处理是间接的。③精度高在二进制文件转化文本文件的过程中有效位会有丢失而直接以二进制文件存储处理就不会发生该情况。缺点①看不懂。2.文本文件.txt 、.p、.c、.cpp……和上述二进制文件都刚好相反。一.文件指针文件指针是贯穿缓冲文件系统的主线一个文件指针是指向文件有关信息的指针。在C语言中一个文件的有关信息都被整合在了一个默认的结构体中FILE该结构体已经在头文件stdio.h中说明那么文件指针就是一个指向 FILE类型的结构体 的 指针。定义FILE *fp为了提高程序的可读性可以将输入文件定为fin输出为fout等等。同样的也可以定义一个文件指针组例如FILE *fin[N]同时定义了N个输入文件的指针。注这里操作的都是数据文件。二.文件的打开1.函数FILE *(char *filename, char *mode)顾名思义第一个参数是文件名但是文件名也略有讲究一个合格的文件名应包括三大部分文件路径文件主名文件后缀例如c:\temp\text1.txt但是在使用函数的时候可以不写文件路径不写时程序默认路径为当前工作路径。第二个参数是打开方式注二进制文件打开方式后面多的b就是bin的开头(●’◡’●)。这里一般不使用的模式专一一些少些问题。2.代码展示注因为双撇号括起来的字符串中“\”开始表示转义字符如果要表示路径中的斜杠必须用双斜杠“\\”。这里的报错是一个格式化代码一般打开文件不论哪种方式都可以写上fopen函数在当打开失败时其会返回NULL。这里的文件名还可以是定义的一个字符数组变量字符串实现打开指定的文件。该情况下文件默认是在当前工作路径下。3.对打开文件的理解当执行打开文件的命令时系统会干3件事①建立一个文件相应的信息区②开辟相应的文件缓冲区③实现将文件的内容从磁盘上读入到内存缓冲区。三.文件的关闭1.函数int fclose(FILE *fp)关闭成功返回0否则非0不同编译器可能不一样大多是-1会有一个符号常量EOF来表示-1。2.代码3.对关闭文件的理解当执行关闭文件的命令时系统会干3件事①将使用完的文件从缓冲区中写回磁盘②切断缓冲区与该文件所有联系③释放文件缓冲区缓冲文件系统自带的。4.注意注意注意打开文件后一定得关就像malloc了一些堆区内存后一定得free四.文件的读下文的fp均与上文定义的fp意义一致前文讲到键盘的输入是一种标准输入输出文件因此以前使用的各种输入函数都是文件读取函数的特殊情况。注以下函数都得在读或读写的模式下打开r,r等。1.读字符函数fgetc对应getchar:①原型int fgetc(FILE *pf)②用法注从fp指向文件的当前位置读取一个字符并将文件位置指针后移。若读入的为文件结束符或出错时返回EOF。③和getchar()的对比getchar()和fgetc(stdin)等价。2.读字符串函数fgets对应gets①原型char *fgets(char *buf, int n , FILE *fp)②用法注最多只可读取n-1个字符末尾添加‘\0’。该函数在非文件处理下应用也较为广泛gets函数是遇到‘\n’终止读取且自动删除‘\n’有潜在危险应用的是③和gets对比gets()与fgets(str,n,stdin)约等有差别。3.格式化读fscanf和scanf对应①用法原型有点抽象即在scanf函数的参数前面加上一个文件指针指明从哪里读。②和scanf对比fscanf(stdin,”%d”,n)和scanf(“%d”,n)是等价的。五.文件的写同文件的读以前使用的各种输入函数都是文件读取函数的特殊情况。注以下函数都得在写或读写的模式下打开w,w等。1.写字符fputc和putchar对应①原型int fputc(char ch, FILE *fp);②用法注操作失败返回EOF。③和putchar()对比putchar(c)和fputc(c,stdout)等价。2.写字符串fputs对应puts①原型int fputs(char *str, FILE *fp)②用法③和puts()对比puts(c)和fputs(c,stdout)等价。3.格式化写fprintf和printf对应①用法原型有点抽象即在printf函数的参数前面加上一个文件指针指明从哪里读。②和printf()对比printf(“%d”,n)和fprintf(fp,”%d”,n)等价。END文件是程序处理的本质了解文件的处理有助于对深层且实用性更强的程序以及数据库的掌握。文件的数据块读写随机读写下次见