工信版(中职)编程语言基础——C语言模块8教学课件.ppt
-
资源ID:90589535
资源大小:1.11MB
全文页数:44页
- 资源格式: PPT
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
工信版(中职)编程语言基础——C语言模块8教学课件.ppt
Y CF(中职)编程语言基础C 语言模块8 教学课件模块8 文件 任务1 文件的定义和分类 任务2 文件的打开与关闭 任务3 文件的读写任务1 文件的定义和分类 8.1.1 文件的定义 通常,文件(File)是指保存在某种外部存储介质上的一组意义相关的数据集合。每个文件都必须用一个文件名来进行标识。操作系统就是根据文件的名称来对文件进行存取操作的。用户也可以建立自己的文件,用不同的名字和后缀(扩展名)来表示文件的意义和类型。由文件的定义还可以看出,文件操作一般会涉及外部存储介质的存储操作,通常的访问对象是磁盘。上面所讲的文件实际上是指磁盘文件,但在操作系统中,许多外部设备也可以被看做是文件,这样的文件称为设备文件。每个设备都有唯一的一个设备文件名。在C 语言系统中,也采用类似的方法。C 系统定义了5 个标准设备文件,如表8-1 所示。下一页 返回任务1 文件的定义和分类 8.1.2 文件的分类 文件有很多种,常见的有文本文件、图形文件、声音文件、可执行文件等,它们可以有很多分类方法。而c 语言关心的是文件中数据的存储方式,就此而言,文件分为以下两类。1.文本文件 文本文件是指由字符组成的文件。字符可以是字母、数字、运算符等,每个字符通过相应的编码存储在文件中。目前常用的编码是ASCII 码,它用一个字节来对这些字符进行编码。2.二进制文件 二进制文件是指数据按存储原样组成的文件。仍以存储数16 为例,在二进制文件中直接存放的就是16,因此只要占用一个字节就行了。上一页 返回任务2 文件的打开与关闭 8.2.1 文件的打开(fopen()函数)函数用来打开文件,正常操作时,它将为 用户指定的文件在内存中分配一个FILE 结构区,并将该结构区的指针作为函数值返回,以后用户可以通过指针来对文件进行存取操作。1.一般形式上一页 返回 下一页任务2 文件的打开与关闭 2.说明 文件指针变量要在使用前进行定义;文件名是字符串或字符串变量。若是字符串变量,应在使用前赋值;方式表示欲对所打开的文件进行的访问方式。Turbo C 所使用的标记符和含义如表8-2 所示。(1)当用”w”方式打开一个文件时,若已存在与该文件名相同的文件则会被抹掉,重建一个新文件。若不存在该文件,则新建一个用该文件名命名的文件。(2)当用”r”方式或”a”方式打开一个文件时,该文件必须存在,不然会返回一个出错信息。上一页 返回 下一页任务2 文件的打开与关闭(3)给文件名变量赋值或书写文件名字符串时,应注意文件名包括盘符和路径。路径的分隔符要加上转义字符“”,因此在格式中出现的是“c:data.”。如果被打开的文件在当前盘当前目录下,则盘符和路径可以省略。(4)如果需要向文件尾部添加新的数据(不删除原有数据),则应该用“a”方式打开。但此时该文件必须已经存在,否则将得到出错信息。用该方式打开文件时,其内部的位置指针指向文件尾。(5)用“r+”、“w+”、a+”方式打开的文件可以用来输入和输出数据。上一页 返回 下一页任务2 文件的打开与关闭(6)如果不能实现“打开”的任务,fopen 函数将返回一个NULL 空指针。经常利用这一点来判断文件的打开操作是否正常,若不正常,则应给出相应的出错信息。(7)在应用文本文件向计算机输入时,将回车换行符转换为一个换行符,在输出时把换行符转换成为回车和换行两个字符。在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致。(8)在程序开始运行时,系统自动打开3 个标准文件:标准输入、标准输出、标准出错输出。通常这3 个文件都与终端相联系。上一页 返回 下一页任务2 文件的打开与关闭 8.2.2 文件的关闭(fclose()函数)文件操作完以后,为了确保数据保存的完整性,一定要关闭文件。文件关闭后,该文件对应的FILE 结构区便被释放,从而使被关闭的文件得到保护。此后,文件指针变量与文件脱离指向关系,以后不能再通过该指针对其相连的文件进行读写操作。1.一般形式上一页 返回 下一页任务2 文件的打开与关闭 2.说明 文件指针变量是在文件打开之前定义的,打开时,将它指向打开的文件,以便对文件进行读写操作。关闭文件,就是使文件指针变量不再指向该文件,同时将尚未写入磁盘的数据(存在内存缓冲区中的数据)写入磁盘,从而保证写入文件的数据的完整性。作为良好的习惯,应该在文件操作完毕及时进行关闭。C 语言的流式文件,在打开时建立一个内存文件缓冲区,读写数据是通过批处理方式对磁盘进行工作的。当写数据时写满缓冲区才向磁盘写一次,因此,若在缓冲区不满时结束操作,文件中的数据可能不全;但在文件关闭时,不管缓冲区是否已满,都要向磁盘文件中写一次,这样就能保证数据不丢失。上一页 返回 下一页任务2 文件的打开与关闭 如不注意及时关闭文件,还会造成两个不良的后果。(1)出现文件不够用的错误。C 系统可以提供20 个文件供用户使用,除了有5 个被系统的标准文件占用外,用户还可以使用15 个。虽然这个数目看着很大,但如果多次打开文件而不注意随时关闭的话,仍然会产生文件不够用的现象。(2)系统自动关闭文件。有时在文件打开太多的时候,系统会自动地关闭一些文件,这样关闭的文件,可能会造成数据的丢失。上一页 返回任务3 文件的读写 8.3.1 文件的顺序读写 对文件的读和写是最常用的文件操作。在c 语言中提供了多种文件读写的函数。使用以上函数都要求包含头文件stdio.h 返回 下一页任务3 文件的读写 1.fputc()用fputc()可以将指定的单个字符输出到磁盘文件中去,其调用的一般形式为:该函数的功能是将参数中指定的字符输出到文件指针所指向的磁盘文件中去。如果函数执行成功,返回被输出的字符;否则返回EOF(文件结束标志,是系统预定义的符号常量,其值为-1)。上一页 返回 下一页任务3 文件的读写【例8-1】将指定的字符输出到磁盘文件中。上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写 2.fgetc()用fgetc()可以一次从磁盘文件中读取一个字符,其调用的一般形式为:该函数的功能是从文件指针所指向的文件中读取一个字符并把它赋值给字符变量,fgetc()的返回值就是该字符。如果在执行坛fgetc()时遇到文件结束符,则返回EOF。可以利用该函数来判断文件中的数据是否被读完。上一页 返回 下一页任务3 文件的读写【例8-2】从磁盘文件中读取一个字符。上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写 3.fputs()用fputs()可以将字符数组中的字符串输出到磁盘文件中,其调用的一般形式为:该函数的功能是将字符串输出到文件指针所指向的文件中去,但字符串结束标志0 不输出。【例8-3】从键盘上输入3 个字符串,将它们输出到一个磁盘文件中去。上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写 4.fgets()用fgets()可以从一个磁盘文件中读取一个字符串到字符数组中,其调用的一般形式为:该函数的功能为从文件指针所指向的文件中读取n-1 个字符,并把它存放到字符数组中。如果在读入n-1 个字符完成之前遇到换行符n 或文件结束标志EOF,则结束读取。但它会将遇到的换行符n 也作为一个字符送入字符数组。在字符串读入后会自动加上一个字符串结束标志0。该函数的返回值为字符数组的首地址,若出错将返回NULL。上一页 返回 下一页任务3 文件的读写【例8-4】从磁盘文件中读回字符串并在屏幕上显示。上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写 5.fprintf()用frintf()可以将数据以一定的格式输出到磁盘文件中去,其调用的一般形式为:该函数的功能是将各输出项以格式控制字符串中所指定的格式输出到文件指针所指向的文件中去。【例8-5】格式化数据输出到磁盘文件。上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写 6.fscanf()用fscanf()可以以一定的格式将数据从磁盘文件中读取出来,其调用的一般形式为:该函数的功能是以格式控制字符串中所指定的格式将数据从文件指针所指向的文件中读取出来,然后分别送给指定的变量。【例8-6】以一定的格式从磁盘文件中读取数据并在屏幕上显示。上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写 7.fwrite()用fwrite()可以将一批数据(如数组所有元素值、结构体变量的值)作为一个整体一次性写入磁盘文件,其调用的一般形式为:该函数的功能是从buffer 所代表的起始地址开始,每次输出字节大小为size 的数据块,共输出count 次,输出到年所指向的磁盘文件中去,若函数执行成功则返回count 的值。应当注意:用fwrite()实行按“块”操作,必须采用二进制方式。上一页 返回 下一页任务3 文件的读写【例8-7】从键盘上输入一批学生信息并输出到磁盘文件中。上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写上一页 返回 下一页任务3 文件的读写 8.fread()用fread()可以将磁盘文件中的一批数据(如数组所有元素值、结构体变量的值)作为一个整体一次性读取出来,其调用的一般形式为:该函数的功能是从fp 所指向的磁盘文件中每次读取字节大小为size 的数据块,共读取count 次,存放到以buffer 为起始地址的内存空间中,若函数执行成功则返回count 的值。应当注意:fread()也是实行按“块”操作,也必须采用二进制方式。上一页 返回 下一页任务3 文件的读写 8.3.2 文件的随机读写 前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个数据,但在实际中常要求只读写文件中某一指定的部分。从前面的学习中可知,在文件内部有一个系统自动设置的“读写位置指针”,只要将位置指针移动到需要的地方,就能实现文件的随机读写。实现文件随机读写的关键是要准确地移动位置指针,这称为文件的定位。在C 语言中,文件的定位及相关操作也是由库函数来完成的。上一页 返回 下一页任务3 文件的读写 1.fseek()利用fseek()可以将位置指针移动到所需位置,其一般调用形式为:feeek(文件指针变量,位移量,起始点);该函数的作用是以“起始点”为基准,将文件指针所指向的文件中的位置指针按指定的“位移量”进行移动。其中,“位移量”为long 类型的数据,表示要移动的字节数,可正可负。若位移量为正数,表示从文件开头向文件末尾移动;否则移动方向相反。“起始点”指的是以什么地方为基准进行移动,它可用数字表示,也可用宏名来表示,其表示方法如表9-2 所示。如果函数执行成功,返回值为0;否则为非0 值。上一页 返回 下一页任务3 文件的读写 例如 需要注意的是,fseek()一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。上一页 返回 下一页任务3 文件的读写 2.rewind()利用rewind()可以使位置指针重新返回文件的开头处。其一般调用形式为:rewind(文件指针变量);该函数没有返回值。3.ftell()利用ftell)可以知道位置指针的当前指向。其一般调用形式为:ftell(文件指针变量);该函数的返回值为文件指针所指向的文件中位置指针的当前指向,如果出错,则返回-1上一页 返回 下一页任务3 文件的读写 8.3.3 文件检侧 1.feof()调用的一般形式为:feof(文件指针变量);它的功能是判断文件是否处于文件结束位置,如文件结束,则返回值为1;否则为0 2.ferror()在C 语言中,大多数的文件操作函数并没有明确的出错信息返回。因此,C 语言提供了一个可以检测文件操作是否出错的ferror,其调用的一般格式为:ferror(文件指针变量);上一页 返回 下一页任务3 文件的读写 如果最近一次文件操作成功,则ferror()的返回值为。;否则返回一个非0 值。在打开一个文件时,系统会自动使ferror()的初值为0。需要注意的是,因为每个文件操作都设置错误条件,所以如果想检测文件操作是否出错,应在调用该文件操作函数之后马上用ferror()进行检测,以防止丢失错误状态。上一页 返回表8-1 C 系统的标准设备文件返回表8-2 文件打开方式说明返回表9-2 起始点的宏名表示返回