第13章 C语言程序设计文件操作_第1页
第13章 C语言程序设计文件操作_第2页
第13章 C语言程序设计文件操作_第3页
第13章 C语言程序设计文件操作_第4页
第13章 C语言程序设计文件操作_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第1313章章 文件操作文件操作 2第第1313章文件操作章文件操作 n13.1 文件操作基础 n13.2 文件的打开和关闭 n13.3 文件的读写 n13.4 文件定位 n13.5 小结 313.1 文件操作基础n13.1.1 文件基础知识n13.1.2 文件指针n13.1.3 文件处理步骤 413.1.1 文件基础知识n文件是程序设计中的重要概念。所谓“文件”是指一组存储在外部介质上相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际上在前面的各章中已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件(头文件)等。文件通常驻留在外部介质(如磁盘等)上,在使用时才调入内

2、存。n(1)普通文件和设备文件n普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集 。设备文件是指与主机相联的各种外部设备,如显示器、打印机、键盘等。 n(2)ASCII码文件和二进制码文件nASCII文件也称为文本文件。C语言将文件的内容看成一个一个字符组成,这种文件在磁盘中一个字节存放一个ASCII码,即存放对应的一个字符。 513.1.2 文件指针n文件类型指针是“缓冲文件系统”的一个重要概念。要调用一个文件,需要知道以下信息:文件当前的读写位置、与该文件对应的内存缓冲区的地址、文件名、文件状态等。每一个文件的这些信息保留在缓冲文件系统为每个文件开辟的“文件信息描述区”中。 n不同的

3、编译系统FILE的格式有细微差别,大体格式如下:typedef structint _fd; /文件号或通道号int _cnt; /输入缓冲区中等待存取的字符个数char *_ptr; /指向当前所取的字符FILE;n定义说明文件指针的一般形式为: FILE *指针变量标识符; 613.1.3 文件处理步骤n在C语言中,文件的处理过程分为3步:n(1)打开文件n(2)读/写文件n(3)关闭文件 n在C语言中,文件操作都是由库函数来完成的。在本章后面将陆续介绍主要的文件操作函数。713.2 文件的打开和关闭n13.2.1 文件的打开n13.2.2 文件的关闭813.2.1 文件的打开n打开文件就

4、是建立文件的各种有关信息,并使文件指针指向该文件。如果是读文件,需要先确定此文件是否已存在,并将读写位置设置于文件开头。如果是写文件,需要检查原来是否有同名文件。如果有,则将该文件删除,然后建立新文件,如果原来没有同名文件,就将读写位置设置于文件开头,以便写入数据。nfopen()函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 913.2.2 文件的关闭n在使用完文件后应该关闭该文件,防止它被误用。“关闭文件”就是使文件指针变量不指向该文件,也就是使文件指针变量与文件脱离。这样,就不能再通过该指针访问文件了。n使用fclose()函数关闭文件。调用的

5、一般形式是:fclose(文件指针);1013.3 文件的读写n13.3.1 字符的输入、输出n13.3.2 字符串的输入、输出n13.3.3 格式化数据的输入、输出文件n13.3.4 数据块的输入、输出文件n13.3.5 文件状态检查1113.3.1 字符的输入、输出n字符输入/输出函数fgetc()和fputc()是以字符(字节)为单位的读写函数。每次可从文件读取或向文件写入一个字符。 n(1)字符输入函数fgetc()nfgetc()函数的功能是从指定的文件中读一个字符,函数调用的形式为: 字符变量=fgetc(文件指针);【例13-1】本实例演示了读取文件“li12_1.txt”并在屏

6、幕上输出。 n(2)字符输出函数fputc()nfputc()函数的功能是把一个字符写入指定的文件中,函数调用的形式为:fputc(字符量,文件指针);【例13-2】本实例演示了从键盘输入一行字符并将它们写入文件,再把该文件内容输出到显示器上。 1213.3.2 字符串的输入、输出n使用fgets()函数输入一个字符串,用fputs()可以输出一个字符串。下面介绍它们具体的使用方法。n(1)字符串输入函数fgets()nfgets()函数的功能是从指定的文件中读取一个字符串(n-1个字符)到字符数组中,函数调用的形式为: fgets(字符数组名/字符数组指针,n,文件指针)【例13-4】本实例

7、演示了从“li12_1.txt”文件中读入一个含15个字符的字符串。 n(2)字符串输出函数fputs()nfputs()函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针); 【例13-5】本实例演示在代码13-2中建立的文件“li13_2.txt”中追加一个字符串。 1313.3.3 格式化数据的输入、输出文件nfscanf()函数和fprintf()函数与前面使用的scanf()和printf()函数的功能相似,都是格式化输入输出函数。两者的区别在于scanf()函数和printf()函数的输入输出对象是终端(即键盘和显示器),而fscanf()函数和f

8、printf()函数的输入输出对象不是键盘和显示器,而是磁盘文件。 n【例13-7】本实例演示了使用fscanf()/fprintf()函数实现雇员信息的输入/输出操作。 1413.3.4 数据块的输入、输出文件n前面介绍了3种方法输入输出文件方式,ANSI标准对缓冲文件系统做了补充。还提供了用于整块数据的读写函数。可用来读写一组数据,如一个数组元素、一个结构变量的值等。这样方便对程序中的数组、结构体变量进行整体的输入输出。n读取数据块函数调用的一般形式为:fread(buffer,size,count,fp); n写数据块函数调用的一般形式为:fwrite(buffer,size,count

9、,fp); 【例13-8】本实例改写了代码13-7,演示了使用fread()和fwrite()函数实现雇员信息的输入/输出操作。 1513.3.5 文件状态检查nC语言还提供一些检查文件输入输出函数调用错误的函数,常用的文件检测函数有文件结束检测函数feof()、读写文件出错检测函数ferror()和文件错误清零函数clearerr()。n(1)文件结束检测函数feof() nfeof()函数调用格式:feof(文件指针); 【例13-9】本实例演示了使用feof()函数实现文件复制操作。n(2)读写文件出错检测函数ferror()nferror()函数调用格式:ferror(文件指针); n

10、(3)文件出错标志和文件结束标志置0nclearerr()函数调用格式:clearerr(文件指针); 1613.4 文件定位n13.4.1 移动位置指针到文件头n13.4.2 随机移动文件位置指针1713.4.1 移动位置指针到文件头n如果需要从文件头开始顺序读写一个文件的字符,那么,可以使用rewind()函数将文件位置指针移动到文件头。当读写完一个字符后,位置指针自动移动到下一个字符位置。nrewind()函数调用形式为:rewind(文件指针); 【例13-10】本实例演示了将文件在显示器上输出并复制到另外一个文件中。1813.4.2 随机移动文件位置指针n随机读写是指读写完上一个字符

11、(字节)后,并不一定读写和它的相邻的下一个字符,而可以读写文件中任意所需的字符。fseek()函数就可以实现随机的移动文件位置指针。fseek()函数调用形式为:fseek(文件指针,位移量,起始点);【例13-11】本实例演示了在雇员信息文件“employee _list.txt”中读出第二个雇员的信息操作。 1913.5 小结nC系统把文件当作一个字符“流”,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。文件可按字节、字符串、数据块为单位读写,文件也可按指定的格式进行读写。字符输入/输出函数fgetc()和fputc()是以字符(字节)为单位的读写函数,每次可从文件读取或向文件写入一个字符。使用fgets()函数输入一个字符串,fputs()可以输出一个字符串。fread()和fwrite()函数进行读写二进制形式数据块。fscanf()函数是从文件指针所指文件中按照指定格式读入数据到相应的输入表列中,fprintf()函数是将输出表列

温馨提示

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

评论

0/150

提交评论