《C语言》课件-8.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《C语言》课件-8.ppt》由会员分享,可在线阅读,更多相关《《C语言》课件-8.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 C的文件操作函数1.2.3.本章讲述内容:本章讲述内容:4.C语言能够处理的文件形式;语言能够处理的文件形式;C语言文件的结构类型及其指针语言文件的结构类型及其指针;文件的打开和关闭函数文件的打开和关闭函数;有关文件的读、写函数;有关文件的读、写函数;5.有关文件的操作函数。有关文件的操作函数。8.1 文件及文件型指针文件及文件型指针.o8.1.1 C的文件概念的文件概念 所谓“文件文件”,是指存储在外部设备上的、以名字作为标识的数据集合。如今大都把文件存储在磁盘上,因此统称其为磁盘文件。所谓“文本文件”,是把内存中的数据转变成相应的ASCII码值形式,然后存放在磁盘上。因此,磁盘上每
2、个字节存放的内容是ASCII码值,表示一个字符。所谓“二进制文件二进制文件”,是把内存中的数据按其在内存中的存储形式原样原样存放到磁盘上去。.例:例:考察整数2008 在内存中的存放,以文本文件形式在磁盘上的存放,以二进制文件形式在磁盘上的存放。(1)数值2008在内存的存储形式:(2)数值2008以文本形式在磁盘的存储形式:(3)数值2008以二进制形式在磁盘的存储形式:0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 00 0 1 1 0 0 0 0 0
3、 0 1 1 1 0 0 0 2008.数据按文本形式存储在磁盘上,占用的存储空间多,存储时要花费转换时间。但以这种形式存储,一个字节代表一个字符,便于对字符进行逐个处理,也便于输出显示。.数据按二进制形式存储在磁盘上时,无须花费转换时间,占用空间少。但字节不与字符对应,因此不能直接输出显示。在使用C的文件操作函数时,正确指定磁盘文件所在路径非常重要。路径不对,系统就找不到文件,也就无法对该文件进行任何处理了。.C语言里,把进行输入/输出的终端设备(键盘、显示器)视为文件,统称为“标准标准设备文件设备文件”。最主要有3个:与键盘对应的标准输入文件;与显示屏对应的标准输出文件;与显示屏对应的标准
4、出错信息文件。.在将输入/输出终端设备与“文件”联系起来后,从键盘上读取数据时,可用C提供的文件操作函数,改为从标准输入文件(即是键盘)里读取;往屏幕上写数据,可用C提供的文件操作函数,改为往标准输出文件(即是显示屏)里写。.所谓“缓冲文件系统缓冲文件系统”,即是输出时,先将数据送到内存缓冲区,缓冲区装满后,才将整个缓冲区的内容一次写入磁盘;输入时,先把磁盘中的一块数据读入到内存缓冲区,然后再从缓冲区中把需要的数据挑出来,送到程序规定的数据区中。整个处理过程如图所示。磁盘输入输出输入文件缓冲区输出文件缓冲区输出输入程序数据区内存o8.1.2 C的文件结构及其指针的文件结构及其指针 C语言中,把
5、文件视为是具有“FILE”结构类型的数据,系统在“stdio.h”头文件里给出了它的定义。.FILE结构类型的形式大致为:typedef struct iobuf int fd;/*文件描述符*/int mode;/*文件操作模式*/int cleft;/*文件缓冲区剩余字节数*/char *nextc;/*下一个待处理字节地址*/char *buff;/*文件缓冲区首地址*/FILE;.C语言中的每个文件,都有一个FILE型结构变量与之对应,只要知道其地址,就可通过它里面记录的信息,实现访问这个文件的目的。所以,指向FILE型结构变量的指针(简称“文件指针”)对于文件的使用是极其重要的。.程
6、序中可通过下面的方法来说明变量fp是一个文件指针:FILE*fp;把某个文件的FILE结构变量地址赋给它后,就在这个文件和文件指针fp之间建立起了联系,C语言就把这个指针作为该文件的标识,在程序中就可通过fp来访问这个文件了。o8.2.1 文件打开函数:文件打开函数:fopen()8.2 文件的打开与关闭函数文件的打开与关闭函数 所谓“打开文件打开文件”,即是建立起某个文件与一个FILE变量的联系,使得能够通过这个FILE变量,对该文件进行输入或输出操作。.所谓“关闭文件关闭文件”,即是切断文件与所对应FILE变量的联系,从而不能进行输入或输出操作。文件打开函数fopen()的函数头格式是:.
7、FILE*fopen(,)其中是所要打开的、包含路径在内的一个文件的名字,它是一个字符串常量(即用双引号括起来);是一个字符串常量,指明欲打开文件的性质(是文本文件还是二进制文件),以及被打开后是用于读、写还是又读又写。如果正确地将所需要的文件打开了,那么表明系统已在指定文件和一个FILE变量之间建立起了联系,并把文件的有关信息赋给了这个FILE变量的成员。返回的FILE型指针,正是那个FILE变量的地址。于是,函数fopen()的调用者必须定义一个FILE型指针,来接收这个地址。.这里调用fopen(),想以只读方式(“r”)打开文件“C:/zong/prog/test.txt”。打开后,返
8、回值由FILE型指针变量fp接收。若打开失败,则输出信息:file can not be opened!然后调用系统函数exit()终止运行。例:例:程序中有如下的语句:FILE*fp;if(fp=fopen(C:/zong/prog/test.txt,r)=NULL)printf(file can not be opened!n);exit(1);若成功打开,那么fp就是该文件的标识,要在该文件上操作,就都用这个指针来标识文件名。删节号“”处是成功打开文件后的程序语句,在那里只出现指针fp。.可能导致函数fopen()返回NULL的原因:(1)(2)所给文件名不对;文件所在磁盘没有准备好(比
9、如软盘未插好等);(3)(4)在指定的目录下不存在这个文件;试图以“r”(读)模式打开一个不存在的文件。编写程序,在用户目录下,用“w”打开模式建立一个名为test.txt的新文件,然后将其关闭。o8.2.2 文件关闭函数:文件关闭函数:fclose()文件关闭函数fclose()的函数头格式是:.int fclose ()这个指针指向的是用fopen()得到的那个与文件相关联的FILE结构变量。若文件关闭成功,函数将返回值0;若关闭失败,函数返回EOF(系统定义的符号常量,表示1),说明关闭有错。例:例:(1)程序实现#include stdio.hmain()FILE*fp;if(fp=f
10、open(C:/zdh/test1.txt,w)=NULL)printf(can not open file!n);exit(1);fclose(fp);(2)分析与讨论.执行该程序后,请查看一下用户自己的目录下,是否多了一个文本文件test1。C语言3个标准设备文件是:标准输入文件、标准输出文件、标准出错信息文件,系统启动后会自动被打开。它们各自所对应的FILE指针变量名如表所示。.o8.2.3 标准设备文件的使用标准设备文件的使用标准设备文件名对应的FILE型指针名标准输入文件(键盘)标准输出文件(显示屏幕)标准出错信息文件(显示屏幕)stdinstdoutstderr.有了这些FILE型
11、指针名,在程序中调用C文件的各种操作函数时,就可以直接用它们来代表键盘或显示屏幕,以文件的形式来完成所需要的输入、输出以文件的形式来完成所需要的输入、输出任务了。对于3种标准设备文件,用户既不用关心它的打开,也不用关心它的关闭,在程序中什么时候想用,就尽管拿来用。只有到退出系统时,系统才会自动将它们关闭。.8.3 文件的读文件的读/写操作写操作.o8.3.1 文件尾测试函数文件尾测试函数 在读取文件数据时,必须判断是否已读到了文件尾。文件尾测试函数就用于此目的。.文件尾测试函数feof()的函数头格式是:int feof()是指向由fopen()得到的与文件相关联的FILE结构变量。如果已经到
12、达文件尾,那么函数返回非0值,否则返回值0。#include stdio.hmain()FILE*fp;if(fp=fopen(C:/zdh/test1.txt,r)=NULL)printf(can not open file!n);exit(1);while(!feof(fp)fclose(fp);例:例:文件尾测试函数在程序中的使用方法 文件测试函数的使用o8.3.2 读读/写字符函数写字符函数.读/写字符函数是指把一个字符写入文件,或从文件中读取一个字符的操作。因此,这是以字节为单位字节为单位进行的输入/输出。1.写字符函数:写字符函数:fputc().写字符函数fputc()的函数头格
13、式是:int fputc(,)其中是一个字符常量,也可是一个有值的字符型变量,它就是要往文件上写的字符;即是接收字符的文件。若输出成功,函数返回输出的字符;否则返回EOF(1)。例:例:编写一个程序,从键盘上输入一个字符串,利用写字符函数fputc(),将其存入到文件“C:/zdh/test1.txt”中。#include stdio.hmain()FILE*fp;int k;char str80;if(fp=fopen(C:/zdh/test1.txt,w)=NULL)printf(file can not be opened!n);exit(1);gets(str);for(k=0;str
14、k;k+)fputc(strk,fp);fclose(fp);程序里,用以前学的函数gets()接收来自键盘的输入,然后用写字符函数fputc(),把数组str里的字符一个个往文件fp上写。.2.读字符函数:读字符函数:fgetc()读字符函数fgetc()的函数头格式是:char fgetc()其中指出是要从这个文件里读取一个字符。如果操作正确,函数返回读出字符的ASCII码值;如果读到文件结束或出错,则返回EOF(1)。例:例:编写一个程序,把已建立的磁盘文件test1中的内容读出,并显示在屏幕上。#include stdio.hmain()FILE*fp;int k;char ch;if
15、(fp=fopen(c:/zdh/test1.txt,r)=NULL)printf(file can not be opened!n);exit(1);ch=fgetc(fp);while(!feof(fp)putchar(ch);ch=fgetc(fp);fclose(fp);.程序中以“r”模式打开文件test1。如果打开成功,则文件指针fp就代表该文件。.用函数fgetc()先从文件fp中读取一个字符,并进入while循环。只要没有到达文件结束处,读取操作就继续。例:例:编写程序,从键盘上输入一个字符串,将其存入到文件stdout中。#include stdio.hmain()int k
16、;char str80;gets(str);for(k=0;strk;k+)fputc(strk,stdout);.文件stdout即是显示屏,所以题目的意思是从键盘上输入字符串后,在显示屏幕上显示。程序中用两种方法显示字符串,一是执行语句:gets(str);二是通过for循环,将str里的内容存入stdout。编写程序,从文件stdin上读取任意一个字符串,然后存入文件stdout中。例:例:#include stdio.hmain()int k=0;char str80;strk=fgetc(stdin);while(!feof(stdin)str+k=fgetc(stdin);strk
17、=0;for(k=0;strk;k+)fputc(strk,stdout);.文件stdin就是键盘,stdout就是显示屏。因此程序的要求是从键盘输入字符串,然后在屏幕上显示。.对于键盘文件,程序中的while循环条件:!feof(stdin)表示是否从键盘上输入了一个文件结束符。若输入的不是文件结束符,循环继续;否则停止。.对于PC机,文件结束符由:+z 形成,即在按键盘上的“Ctrl”键的同时,按字母键“z”,最后按“Enter”键。o8.3.3 读读/写字符串函数写字符串函数.读/写字符串函数即是把一行字符写入文件,或从文件中读取一行字符的操作。因此,这是以字符串为单位以字符串为单位进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言 语言 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内