C语言程序设计教程(第2版)课件第13章.ppt
《C语言程序设计教程(第2版)课件第13章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计教程(第2版)课件第13章.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1313章章 文文 件件本章要点本章要点掌握文件的基本概念掌握文件的基本概念掌握文件类型指针掌握文件类型指针理解文件操作的基本方法理解文件操作的基本方法掌握文件处理函数掌握文件处理函数本章难点本章难点对文件进行不同操作的函数的功能及其用法对文件进行不同操作的函数的功能及其用法13.1 13.1 C文件的概述文件的概述 13.1.1 文件的基本概念文件的基本概念 一、文件:一、文件:是指存储在外部介质上数据的集是指存储在外部介质上数据的集合。合。操作系统是以文件为单位对数据进行管理操作系统是以文件为单位对数据进行管理的。每一个与主机相连的输入或输出设备都看的。每一个与主机相连的输入或输出设备
2、都看作是一个文件。作是一个文件。二、文件的存在形式及分类二、文件的存在形式及分类 文件的存在形式文件的存在形式:文件名:文件名+文件内容。文件内容。文件内容文件内容:是一个字符是一个字符(字节字节)序列,即由一个个字符序列,即由一个个字符 (字节字节)的数据顺序组成。对文件的存取是以字的数据顺序组成。对文件的存取是以字 符符(字节字节)为单位的,这类文件称为为单位的,这类文件称为流式文件流式文件。文件的分类文件的分类:ASCII ASCII 码文件码文件(文本文件文本文件):文件的每一个字节放:文件的每一个字节放 一个一个ASCII代码,代表一个字符。代码,代表一个字符。二进制文件二进制文件:
3、把内存中的数据按其在内存中的存:把内存中的数据按其在内存中的存 储形式原样输出到文件上。储形式原样输出到文件上。根据数据在内存的组织形式不同可分为两类文件根据数据在内存的组织形式不同可分为两类文件 ASCII 码文件(文本文件)码文件(文本文件)二进制文件二进制文件 根据数据读写方式不同可分为两类文件根据数据读写方式不同可分为两类文件 顺序存取文件顺序存取文件 随机存取文件随机存取文件 三、文件的基本操作三、文件的基本操作(1)打开文件打开文件 把文件名等目录信息从磁盘上读把文件名等目录信息从磁盘上读(2)入内存并存入结构体。入内存并存入结构体。关闭文件关闭文件 把内存结构体中的文件名等目录把
4、内存结构体中的文件名等目录 信息写入磁盘。信息写入磁盘。(3)写文件写文件 向文件写内容。向文件写内容。(4)读文件读文件 从文件读内容。从文件读内容。四、四、文件的输入输出方式文件的输入输出方式 C语言对文件进行处理分为:语言对文件进行处理分为:非缓冲文件系统非缓冲文件系统 缓冲文件系统缓冲文件系统非缓冲文件系统非缓冲文件系统 程序与外设直接进行数据交换。程序与外设直接进行数据交换。特点特点 每读写一次都要启动外设。每读写一次都要启动外设。缓冲文件系统缓冲文件系统 程序与外设通过内存缓冲区进行程序与外设通过内存缓冲区进行 数据交换。(常用的方式)数据交换。(常用的方式)特点特点 只有内存缓冲
5、区满只有内存缓冲区满(写盘写盘)或空或空(读盘读盘)才才 启动外设。启动外设。程序程序数据区数据区输出文件输出文件缓冲区缓冲区输入文件输入文件缓冲区缓冲区磁盘磁盘1.文件类型文件类型(FILE)每个被使用的文件都在内存中开辟一个区,每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件名,状态,当用来存放文件的有关信息(如文件名,状态,当前位置等)。这些信息保存在一个结构体类型的前位置等)。这些信息保存在一个结构体类型的变量中。结构体类型由系统定义为变量中。结构体类型由系统定义为“FILE”。有的有的C版本在版本在 stdio.h文件中有如下定义:文件中有如下定义:typedef
6、 struct int _fd;;/*文件号文件号 */int _cleft;/*缓冲区中剩下的字符缓冲区中剩下的字符 */int _mode;/*文件操作模式文件操作模式 */char *_nexttc;/*下一个字符位置下一个字符位置*/char *_buff;/*文件缓冲区位置文件缓冲区位置*/FILE;13.1.文件指针文件指针2.定义定义FILE类型指针变量类型指针变量 FILE 类型的指针变量定义方法类型的指针变量定义方法 FILE *指针变量名指针变量名;例如:例如:FILE*fp;含义:含义:fp是一个指向是一个指向FILE类型结构体的指针变量。类型结构体的指针变量。可以使可以
7、使fpfp指向某个文件的结构体变指向某个文件的结构体变量,从而通过该结构体变量中的文件信量,从而通过该结构体变量中的文件信息能够访问该文件。息能够访问该文件。13.2 13.2 文件的打开与关闭文件的打开与关闭 13.2.1 文件的打开函数(文件的打开函数(fopen函数)函数)(1)(1)调用方式调用方式:FILE*fp;fp=fopen(文件名,文件的使用方式);所要打开的文件名。所要打开的文件名。必须是用双引号引起必须是用双引号引起的字符串常量。的字符串常量。具有特定含意的符号具有特定含意的符号也必须由双引号引起也必须由双引号引起用户定义的文件类型指针变量用户定义的文件类型指针变量功能功
8、能:以指定的方式打开指定的文件,若操作:以指定的方式打开指定的文件,若操作 成功,则返回一个指向该文件的指针,若打成功,则返回一个指向该文件的指针,若打 开文件时出现错误,则返回空指针开文件时出现错误,则返回空指针NULL。例例 FILE *fp;fp=fopen(stu.dat,r);文件使用方式文件使用方式 基本方式字符(单独使用是对文本文件):基本方式字符(单独使用是对文本文件):r 仅为读而打开。仅为读而打开。(只读文件只读文件)w 仅为写而打开。仅为写而打开。(建立新文件建立新文件)a 仅为添加而打开。仅为添加而打开。(写旧文件写旧文件)按二进制格式读写文件(基本方式字符按二进制格式
9、读写文件(基本方式字符+“b”)b 辅助说明,按二进制格式读写文件。辅助说明,按二进制格式读写文件。同时进行读写文件(基本方式字符同时进行读写文件(基本方式字符+“b”+“+”)+辅助说明,可同时进行读和写文件。辅助说明,可同时进行读和写文件。例如:例如:fp=(“stu.dat”,“rb”);例如:例如:fp=(“stu.dat”,“r+”);例:例:#include main()FILE*fp;if(fp=fopen(stu.dat,r)=NULL)printf(file not found.);exit(0);else printf(file opened ok!);fclose(fp)
10、;程序运行结果:程序运行结果:如果磁盘上存在文件如果磁盘上存在文件stu.dat,屏幕上会显示屏幕上会显示file open ok!,否则屏幕上显示否则屏幕上显示file not found.。常使用此方法打常使用此方法打开一个文件开一个文件exit函数的功能是关闭所函数的功能是关闭所有文件,终止程序运行。有文件,终止程序运行。exit(0)为正常终止程序为正常终止程序13.2.2 文件的关闭函数(文件的关闭函数(fclose函数)函数)(1)调用方式调用方式:fclosefclose(文件指针文件指针);功能功能:关闭由文件指针指定的文件,把缓冲区:关闭由文件指针指定的文件,把缓冲区 中的数
11、据(未装满缓冲区的数据)输出中的数据(未装满缓冲区的数据)输出 到磁盘上,释放文件指针。到磁盘上,释放文件指针。例如:例如:FILE*fp;fp=fopen(“output.dat”,“r+”);/*进行读写操作进行读写操作*/fclose(fp);注意:注意:fopen函数和函数和fclose函数总是成对出现的。函数总是成对出现的。无无fclose函数时会导致部分数据丢失!函数时会导致部分数据丢失!13.3 13.3 文件的读写文件的读写 13.3.1 单个字符操作的读写函数单个字符操作的读写函数 这两个函数是以字符为单位进行文件读写的函数。这两个函数是以字符为单位进行文件读写的函数。1.1
12、.fputcfputc函数函数一般调用形式:一般调用形式:fputcfputc(字符常量或变量字符常量或变量,文件指针文件指针););功能:把指定字符存入文件指针所指的文件中。功能:把指定字符存入文件指针所指的文件中。如果输出失败,则返回一个如果输出失败,则返回一个EOF(-1)。)。例如例如:fputc(ch,fp);(其中其中ch为字符变量为字符变量,fp为文件指针为文件指针)含义:将含义:将ch的值输出到的值输出到fp所指向的文件中去。所指向的文件中去。(EOF是在是在stdio.h文件中定义的符号常量,值为文件中定义的符号常量,值为-1)2.2.fgetcfgetc函数函数一般调用形式
13、:一般调用形式:字符变量字符变量=fgetcfgetc(文件指针文件指针););功能:从文件指针所指文件中读一个字符赋给指功能:从文件指针所指文件中读一个字符赋给指 定的字符变量。当遇文件结束符,返回一定的字符变量。当遇文件结束符,返回一 个文件结束标志个文件结束标志EOF(-1)。)。例如:例如:ch=fgetc(fp);其中其中ch为字符变量,为字符变量,fp为文件指针。为文件指针。含义:从含义:从fp所指向的文件中读入一个字符赋所指向的文件中读入一个字符赋 给字符变量给字符变量ch。例例:阅读程序。阅读程序。#include stdio.h#define NULL 0 main()FIL
14、E*fp;int count=0;char c;if(fp=fopen(“file.txt”,“r”)=NULL)printf(“Cant Open File n”);exit(0);c=fgetc(fp);while(c!=EOF)count+;c=fgetc(fp);printf(“count=%dn”,count);fclose(fp);若文件若文件file.txt的内容是的内容是:abcd1234ABCD输出结果:输出结果:12这是读一个文本文件这是读一个文本文件中字符,并判断文件中字符,并判断文件是否结束的常用方法是否结束的常用方法13.3.2 字符串的读写函数字符串的读写函数这两个
15、函数是以字符串为单位进行文件读写的函数。这两个函数是以字符串为单位进行文件读写的函数。一般调用形式:一般调用形式:fputsfputs(字符串字符串,文件指针文件指针););1.fputs函数函数功能:向指定文件输出一个字符串。功能:向指定文件输出一个字符串。例如:例如:fputs(str,fp);(其中其中str是字符数组名是字符数组名)含义:向含义:向fp 所指向的文件中输出所指向的文件中输出str中的字符串。中的字符串。2.fgets函数函数fgetsfgets(字符串字符串,字符串长度字符串长度,文件指针文件指针););功能:从指定文件中读入一个字符串。功能:从指定文件中读入一个字符串
16、。例如:例如:fgets(str,n,fp);(其中其中str是字符数组名是字符数组名)含义:从含义:从fp指向的文件读取长度为指向的文件读取长度为n-1的字符串,的字符串,最后加一个最后加一个0存入字符数组存入字符数组str中。中。调用形式:调用形式:13.3.3 数据块的读写函数数据块的读写函数一般调用形式:一般调用形式:fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);其中:其中:buffer:是一个指针。(是起始地址)。是一个指针。(是起始地址)。对对fread来说,它是读入数据的存放地址。来说,它是读入数据的存放地址。对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 教程 课件 13
限制150内