文件概述文件类型指针文件的打开与关闭文件的读写_第1页
文件概述文件类型指针文件的打开与关闭文件的读写_第2页
文件概述文件类型指针文件的打开与关闭文件的读写_第3页
文件概述文件类型指针文件的打开与关闭文件的读写_第4页
文件概述文件类型指针文件的打开与关闭文件的读写_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、文文 件件 概概 述述 文文 件件 类类 型型 指指 针针 文文 件件 的的 打打 开开 与与 关关 闭闭 文文 件件 的的 读读 写写文件文件:存储在外部介质上数据的集合。:存储在外部介质上数据的集合。 操作系统是以文件为单位对数据进行管理的。操作系统是以文件为单位对数据进行管理的。 概概 述述 1、 C语言把文件看作是一个字符(字节)的序列,即语言把文件看作是一个字符(字节)的序列,即由由 一个一个字符(字节)的数据顺序组成。一个一个字符(字节)的数据顺序组成。 2、在、在C语言中,没有输入输出语句,对文件的读写都语言中,没有输入输出语句,对文件的读写都是是 用库函数来实现的。用库函数来实

2、现的。 文文 件件 类类 型型 指指 针针 在缓冲文件系统中,每个被使用的文件都在内存中开在缓冲文件系统中,每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文辟一个区,用来存放文件的有关信息(如文件的名字、文件状态即文件当前位置等)。这些信息是保存在一个结构件状态即文件当前位置等)。这些信息是保存在一个结构体类型的变量中的。该结构体类型由系统定义为体类型的变量中的。该结构体类型由系统定义为FILE.可以定义文件型指针变量,如:可以定义文件型指针变量,如:FILE * fp ;文文 件件 的的 打打 开开 (1 1) 文件的打开(文件的打开(fopenfopen函数)

3、函数)调用方式为:调用方式为: FILE FILE * *fp;fp; fp=fopen fp=fopen( (文件名,使用文件方式文件名,使用文件方式) );说明:说明: 1 1、用、用“r”r”方式打开的文件只能用于向计算机输入而不能方式打开的文件只能用于向计算机输入而不能 用作向该文件输出数据,而且该文件应该已经存在,用作向该文件输出数据,而且该文件应该已经存在, 不能打开一个并不存在的用于不能打开一个并不存在的用于“”方式的文件(即输方式的文件(即输 入文件)否则出错入文件)否则出错2 2、用、用“”方式打开的文件只能用于向该文件写数据,方式打开的文件只能用于向该文件写数据, 而不能用

4、来向计算机输入。而不能用来向计算机输入。3 3、如果希望向文件末尾添加新的数据(不希望删除原、如果希望向文件末尾添加新的数据(不希望删除原 有数据),则应该用有数据),则应该用“”方式打开。方式打开。4 4、用、用“”、“”、“”方式打开的文件可以用方式打开的文件可以用 来输入和输出数据。来输入和输出数据。5 5、如果不能实现、如果不能实现“打开打开”的任务,的任务,fopenfopen函数将会带回一函数将会带回一 个出错信息。个出错信息。文文 件件 的的 打打 开开 (2 2)文文 件件 的的 打打 开开 (3 3)6 6、用以上方式可以打开文本文件或二进制文件用同一种、用以上方式可以打开文

5、本文件或二进制文件用同一种 缓冲文件系统来处理文本文件和二进制文件。缓冲文件系统来处理文本文件和二进制文件。7 7、在用文本文件,向计算机输入时,将回车换行符转换、在用文本文件,向计算机输入时,将回车换行符转换 为一个换行符,在输出时把换行符转换成为回车和换为一个换行符,在输出时把换行符转换成为回车和换 行两个字符。行两个字符。8 8、在程序开始运行时,系统自动打开三个标准文件:、在程序开始运行时,系统自动打开三个标准文件: 标准输入、标准输出、标准出错输出标准输入、标准输出、标准出错输出 文文 件件 的的 关关 闭闭 (1 1)文件的关闭(文件的关闭(fclosefclose函数)函数)关闭

6、:关闭: 是使文件指针变量不指向该文件,也就是文件指针变量是使文件指针变量不指向该文件,也就是文件指针变量与文件与文件“脱钩脱钩”,此后不能在通过该指针对其相连的文件进行,此后不能在通过该指针对其相连的文件进行读写操作,除非再次打开,使该指针变量重新指向该文件。读写操作,除非再次打开,使该指针变量重新指向该文件。在使用完一个文件后应该关闭它,以防止它再被误用。在使用完一个文件后应该关闭它,以防止它再被误用。fclosefclose函数调用的一般形式为:函数调用的一般形式为: fclosefclose( (文件指针文件指针) )例如:例如: fclose(fpfclose(fp); ); / /

7、* *前面我们曾把打开文件时所带回的指针赋给了前面我们曾把打开文件时所带回的指针赋给了fpfp,今通过,今通过fpfp把该文件关闭,此时,把该文件关闭,此时,fpfp不再指向该文件不再指向该文件* */ /文文 件件 的的 关关 闭闭 (2 2)fclose函数也带回一个值:当顺利地执行了关闭操作,则返回值为0 ; 否则, 返回EOF(-1) 在向文件写数据时,是先将数据输到缓冲区,待缓冲区充满后才正式输出给文件。如果,当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。用flose函数关闭文件,就可以避免这个问题,它先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量。文文 件件

8、 的的 读读 写写文件打开之后,可以对它进行读写了,常用的读写函数如下:fputcfgetcfreadfwritefprintffscanffputcfputc函函 数数 1、fputc函数函数 把一个字符写到磁盘文件上去把一个字符写到磁盘文件上去,其一般形式为:,其一般形式为: fputc(ch , fp);ch可以是一个字符变量,也可以是一个字符常量,可以是一个字符变量,也可以是一个字符常量,fp是是文件指针变量,文件指针变量,fputc(ch , fp) 函数的作用是将字符输函数的作用是将字符输出到出到fp所指向的文件中去。所指向的文件中去。 fp也带回一个值:也带回一个值: 如果输出成

9、功则返回值就是输出的字符;如果输出如果输出成功则返回值就是输出的字符;如果输出失败,则返回一个失败,则返回一个EOF(-1)。 EOF是在是在stdio.h文件中文件中定义的符号常量,值为定义的符号常量,值为-1。fgetcfgetc函函 数数2、fgetc函数函数 从指定的文件读入一个字符从指定的文件读入一个字符,该文件必须是以读或,该文件必须是以读或 读写方式打开的。其调用的一般形式为:读写方式打开的。其调用的一般形式为: ch=fgetc(fp); fp为文件型指针变量,为文件型指针变量,ch 为字符变量。为字符变量。fgetc函数带回函数带回一个字符,赋给一个字符,赋给ch ;如果在执

10、行;如果在执行fgetc函数读字符时遇到函数读字符时遇到文件结束符,函数返回一个文件结束标志文件结束符,函数返回一个文件结束标志EOF(-1);); 如果想从一个磁盘文件顺序读入字符并在屏幕上显如果想从一个磁盘文件顺序读入字符并在屏幕上显示出来,可以示出来,可以: ch=fgetc( fp ) ; while( ch!=EOF ) putchar( ch ) ; ch=fgetc( fp ) ; 例例 题题 程程 序序例13.1 从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止例13.2 将一个磁盘文件中的信息复制到另一个磁盘文件中fread fread 和和 fwritef

11、write 函函 数数fread函数 用来读取一个数据块,Fwrite函数 用来写入一个数据块,它们的一般调用形式为:fread(buffer , size , count , fp)fwrite(buffer , size , count ,fp)其中,buffer是一个指针, 对fread来说,它是读入数据的存放地址;对fwrite来说,它是要输出数据的地址(以上指的是起始地址)size:要读写的字节数count:要进行读写多少个size 字节的数据项fp: 文件类型指针例例 题题 程程 序序例13.3 从键盘输入4个学生的有关数据, 然后把它们转存到磁盘文件上去fprintffprint

12、f函函 数数 和和 fscanf fscanf 函函 数数与与printfprintf函数、函数、scanfscanf函数作用相仿,都是格式化读写函数;函数作用相仿,都是格式化读写函数;不同之处:不同之处:fprintffprintf和和fscanffscanf函数的读写对象不是终端而是函数的读写对象不是终端而是 磁盘文件。磁盘文件。一般调用方式为:一般调用方式为:fprintf(文件指针,格式字符串,输出列标文件指针,格式字符串,输出列标); fscanf(文件指针,格式字符串,输入列表文件指针,格式字符串,输入列表);说明:说明:用用fprintffprintf和和fscanffscanf函数对磁盘文件读写,使用方便,容函数对磁盘文件读写,使用方便,容易理解,但由于在输入时要易理解,但由于在输入时要ASCIIA

温馨提示

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

评论

0/150

提交评论