C语音文件概述-附录程序PPT课件_第1页
C语音文件概述-附录程序PPT课件_第2页
C语音文件概述-附录程序PPT课件_第3页
C语音文件概述-附录程序PPT课件_第4页
C语音文件概述-附录程序PPT课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,1,文 件,在程序运行时,程序本身和数据一般都存放在内存中。当程序运行结束后,存放在内存中的数据被释放。 如果需要长期保存程序运行所需的原始数据,或程序运行产生的结果,就必须以文件形式存储到外部存储介质上。 主要教学内容: 1 语言文件概述 2 文件的打开与关闭 3 文件的读写操作 4 位置指针与文件定位 5 出错检测,2,2,文件(File)的概念,一般指存储在外部介质上具有名字(文件名)的一组相关数据的集合 用文件可长期保存数据,并实现数据共享,3,3,程序中为什么要使用文件?,在程序运行时,程序本身和数据一般都存放在内存中。当程序运行结束后,存放在内存中的数据被释放。 如果需要长期保

2、存程序运行所需的原始数据,或程序运行产生的结果,就必须以文件形式存储到外部存储介质上。在需要使用时,再调入内存。,4,4,文件的存放,可以建立若干目录(文件夹),在目录里保存文件,同一级目录里保存的文件不能同名。 对使用者而言,只要知道文件的路径(全目录)和文件名,就能使用该文件 D:testtemp.c 这都是托操作系统的福,5,5,文件的类型,C语言将文件看作是一个一个字符(字节)序列组成的,分为ASCII码文件和二进制文件两种,将这样的文件称为流式文件。,6,6,二进制文件 是一种字节序列,没有字符变换 按照数据在内存中的存储形式存储到文件 如整数127,在内存占4个字节,为 00000

3、000 00000000 00000000 01111111,则文件中也存储为00000000 00000000 00000000 01111111 ,占4个字节,7,7,文本文件/ASCII码文件 是一种字符序列 文件中存储每个字符的ASCII码 如整数127在文件中占3个字节,分别存放这3个字符的ASCII码,即49,50,55,8,8,文件的格式,数据必须按照存入的类型读出,才能恢复其本来面貌 公开的标准格式 如bmp、jpg和mp3等类型的文件 ,有大量软件能生成和使用这些类型的文件 也有不公开、甚至加密的文件格式 如Microsoft Word的doc格式就不公开,所以至今还没有Wo

4、rd以外的其它软件能完美地读出doc文件,9,9,文件操作,读文件与写文件 所谓读文件是指,将磁盘文件中的数据传送到计算机内存的操作。 所谓写文件是指,从计算机内存向磁盘文件中传送数据的操作。,10,10,缓冲文件系统:系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据时,必须首先输出到缓冲区中。待缓冲区装满后,再一起输出到磁盘文件中。 从磁盘文件向内存读入数据时,则正好相反:首先将一批数据读入到缓冲区中,再从缓冲区中将数据逐个送到程序数据区。,程序 数据区,输出 缓冲区,输入 缓冲区,缓冲文件系统,11,11,系统给每个打开的文件都在内存中开辟一个区域,用于存放文件

5、的有关信息(如文件名、文件位置等)。这些信息保存在一个结构类型变量中,该结构类型由系统定义,取名为FILE(存放在stdio.h中)。,文件类型FILE,12,12,该结构体变量由“库函数”生成,其中各成员也是由“库函数”具体操控,typedef struct short level; /*缓冲区满或空的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区不读字符*/ short bsize; /*缓冲区的大小*/ unsigned char *buffer;/*数据缓冲区的位置*/ uns

6、igned char *curp; /*指针当前的指向*/ unsigned istemp; /*临时文件指示器*/ short token; /*用于有效性检查*/ FILE;,文件类型FILE,13,13,我们要掌握的是:文件类型指针,在缓冲文件系统中可以进行文件的打开、关闭、读、写、 定位等操作。要对文件进行相应的操作,必先定义一个指向文件的指针,这个指针称为文件指针。 文件指针的定义形式: FILE *指针变量标识符; 例如: FILE *fp; fp是一个指向FILE类型结构体的指针变量, 通过该结构体变量中的文件信息能够访问该文件。,14,14,文件访问,基本模式 open:打开文

7、件 获得对此文件的指针,以证明可以使用此文件 read:读文件 参数一般指明要读多少字节,读到哪块内存。 每次调用此功能,都是接着上次调用的结束位置读 write:写文件 参数一般指明把哪块内存的内容写入文件,要写多少字节。 每次调用此功能,都是接着上次调用的结束位置写,15,15,文件访问,基本模式 close:关闭文件 表明操作结束,不再使用此文件。 文件使用完毕必须关闭,否则影响系统性能 seek:文件定位 随机控制文件(流)的当前位置,16,16,标准文件操作的四个基本步骤,1. 文件类型指针的定义,2. 打开标准文件给文件类型指针赋值,3. 标准文件的读或写的操作,4. 标准文件的关

8、闭操作,17,17,文件的打开fopen( )函数,1函数原型: FILE *fopen(“文件名”,“操作方式”); (1)“文件名”是指要打开(或创建)的文件名。如: “d:tempdata.txt” (2)“操作方式”下页所示。 2功能: 打开文件,返回一个指向指定文件的指针;否则,返回一个空指针NULL。 3头文件:stdio.h,必须是 双斜杠,18,18,为增强程序的可靠性,常用下面的方法打开一个文件: fp=fopen(文件名,操作方式“); if(fp=NULL) printf(打不开文件n); exit(1); 关于exit( )函数 exit(程序状态值)关闭已打开的所有文

9、件,结束程序运行,使控制返回操作系统,并将“程序状态值”返回给操作系统。当“程序状态值”为时,表示程序正常退出;非值时,表示程序出错退出。,文件的打开fopen( )函数,19,19,文件的“操作方式”,20,20,文件的关闭fcolse( )函数 1函数原型:int fclose(FILE *fp) 2功能:关闭fp指向的文件。 3. 正常关闭为0;出错时,非0 。 例如,fclose(fp);/*关闭fp所指向的文件*/ 注意:应该养成在程序终止之前关闭所有文件的习惯,如果不关闭文件将会丢失数据。,文件打开时返回的文件类型指针,文件的关闭fclose( )函数,21,21,文件的读写操作,

10、文件打开之后,就可以对它进行读与写的操作了。 读写文件中的一个字符 读写一个字符串 读写一个数据块 对文件进行格式化读写 读写函数的选用原则,22,22,读写文件中的一个字符,1.将一个字符写到文件中fputc( )函数 1)函数原型:int fputc(int c, FILE *fp) 2)功能:把一字节字符c写入fp指向的文件中,同时将读写位置指针向前移动1个字节(即指向下一个写入位置) 3)返值:正常,返回c;出错,为EOF(其值在头文件stdio.h中,被定义为-1)。 2.从文件中读入一个字符fgetc( )函数 1)函数原型:int fgetc(FILE *fp) 2)功能:从fp

11、指向的文件中读取一字节字符 3)返值:正常,返回读到的字符值;读到文件尾或出错返回EOF 3. 库函数feof( ): 1)函数原型:int feof(FILE *fp); 2)功能:在执行读文件操作时,如果遇到文件尾,则函数返回逻辑真(非0);否则,则返回0。,23,23,案例1 将键盘上输入的一个字符串(以“#”作为结束字符),存储到一个文件中。,#include main() FILE *fp; char ch,*filename=“d:out.txt”; fp=fopen(filename,“w”); /打开输出文件 if(fp=NULL) printf(打不开文件n); exit(1

12、); printf(Please input string:); ch=getchar(); /接收键盘输入的第一个字符 while(ch!=#) /当输入#时结束循环 fputc(ch,fp); /将字符写入文件 putchar(ch); /将字符显示在屏幕上 ch=getchar(); / 继续接收字符 fclose(fp); ,24,24,案例2* 将一个磁盘文件的信息复制到另一个文件中。,#include main() FILE *in, *out; /定义文件指针 char ch,infile10,outfile10; scanf(“%s”,infile); /输入文件的名字 sca

13、nf(“%s”,outfile); /输出文件的名字 in = fopen(infile, “r”); /打开输入文件 if (in = NULL) printf(打不开文件n); exit(1); out = fopen(outfile, “w”); /打开输出文件 if (out = NULL) printf(打不开文件.n); exit(1); while (!feof(in) /如果输入文件没结束 ch=fgetc(in); /读一个字符 fputc(ch,out); / 写入 putchar(ch); /显示 fclose(in); fclose(out); /关闭文件 ,25,25

14、,在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指针: 1)标准输入文件stdin:指向终端输入(一般为键盘)。 如果程序中指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。 2)标准输出文件stdout:指向终端输出(一般为显示器)。 3)标准错误文件stderr:指向终端标准错误输出(一般为显示器)。,26,26,函数原型:,char *fgets(char *s,int n,FILE *fp) int fputs(char *s,FILE *fp),功能:从fp指向的文件读/写一个字符串 返值: fgets正常时返回读取字符串的首地址;出错或文件尾,返回NULL fputs正常时返回写入的最后一个字符;出错为EOF,fgets从fp所指文件读n-1个字符送入s指向的内存区, 并在最后加一个0 (若读入n-1个字符前遇换行符或文件尾(EOF)即结束),fputs把s指向的字符串写入fp指向的文件,读写一个字符串fgets( )和fputs( ),27

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论