C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析

上传人:E**** 文档编号:89345533 上传时间:2019-05-23 格式:PPT 页数:50 大小:544.50KB
返回 下载 相关 举报
C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析_第1页
第1页 / 共50页
C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析_第2页
第2页 / 共50页
C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析_第3页
第3页 / 共50页
C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析_第4页
第4页 / 共50页
C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析》由会员分享,可在线阅读,更多相关《C语言编程技巧分析 教学课件 ppt 作者 kj第10章 文件编程技巧分析(50页珍藏版)》请在金锄头文库上搜索。

1、第10章 文件知识编程技巧分析,C语言编程技巧分析,本章概述,本章首先简单介绍文件的相关知识,接着详细讲解运用文件知识时需要注意的问题,并通过实例分析运用文件知识的一些编程技巧。,本章的学习目标,本章教学目的: 掌握文件知识;理解运用文件知识时需要注意的一些问题;掌握文件知识的相关编程技巧。 本章教学重点: 运用位文件知识需注意的问题和编程技巧。 本章教学难点: 关于文件知识的编程技巧。,10.1 文件知识简要介绍 10.2 运用文件知识时需要注意的问题 10.3 文件知识编程技巧分析,本章主要内容,10.1 文件知识简要介绍,10.1.1 文件的概念 文件是程序设计中的一个重要概念,所谓“文

2、件”是指存储在外部介质(如磁盘)上的一组相关数据的集合,为了便于定位这组数据,通常要为它取一个名称,叫做文件名。从用户的角度来看,文件可以分普通文件和设备文件。 存放在存储设备上的基本文件,如系统硬盘里存放的数据,都可以看做普通文件。 而绝大多数的电脑硬件,如显示器、键盘、打印机、扫描仪等等,都算作设备文件。 通俗点解释,对于电脑中存在的一切对象,我们都可以看做文件。计算机的操作系统根据文件名称对于计算机硬件与软件中的一切文件进行查找和操作。 C语言对于文件的操作,都是通过各种功能函数来实现,我们要掌握主要的函数的功能和使用技巧。 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I

3、/O文件操作。流式文件操作是通过缓冲区围绕一个FILE 指针来进行,而I/O文件操作围绕一个文件的“句柄”来进行,所谓“句柄”是一个整数,是系统用来标识一个文件的唯一的记号,在WINDOWS中,句柄的概念扩展到所有设备资源的标识。,本书重点讨论流式文件的操作函数,所以我们先简单了解下FILE指针。 在缓冲文件系统中有一个关键概念是“文件类型指针”,每一个存在的文件都在内存中开辟一个区域,用来存放文件的有关信息(如文件的名称、文件状态、文件当前位置等),这些信息保存在一个结构体变量中,该结构体由系统声明,取名为FILE,具体如下: typedef struct short level; /*缓冲

4、区“满”或“空”的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区不读取字符*/ short bsize; /*缓冲区的大小*/ unsigned char *buffer; /*数据缓冲区的位置*/ unsigned char *curp; /*指针,当前的指向*/ unsigned istemp; /*临时文件,指示器*/ short token; /*用于有效性检查*/ FILE;,10.1 文件知识简要介绍,定义文件类型指针变量的格式为: FILE *指针变量标识符; 例如: F

5、ILE *fp; 这里我们不去研究FILE类型结构体中每一个具体成员的作用,只需要知道,在流式文件的使用和操作中,当我们定义了FILE类型的一个指针,那么这个指针就可以代表某一个在内存中的具体文件。结合后面介绍的多种文件操作函数,就可以对于具体的文件进行预想的操作。,10.1 文件知识简要介绍,10.1.2 打开与关闭文件 1、打开文件(fopen) 文件打开之后才能使用,可以使用fopen函数打开文件,格式如下: FILE *fp; fp=fopen(文件名, 使用文件的方式); 如果文件顺利打开,fp存放指向该文件的指针,否则文件打开失败fp存放NULL。,10.1 文件知识简要介绍,几种

6、使用文件的方式如下: r:以只读方式打开一个文本文件。文件必须存在,否则打开失败。打开后,文件内部的位置指针指向文件首部的第一个字符。 w:以只写方式打开一个文本文件。若文件不存在,则建立该文件。若文件已存在,则删除原文件内容,写入新内容。 a:以追加方式打开一个文本文件。只能向文件尾追加数据。文件必须存在,否则打开失败。打开后,文件内部的位置指针指向文件尾。 r+:以读/写方式打开一个文本文件。文件必须存在。打开后,文件内部的位置指针指向文件首部的第一个字符。打开后,可以读取文本内容,也可以写入文本内容,也可以既读又写。 w+:以读/写方式打开或新建立一个文本文件。若文件已存在,则新的写操作

7、将覆盖原来的数据。若文件不存在,则建立一个新文件。还可以在不关闭文件的情况下,再读取文件内容。 a+:以读和追加的方式打开一个文本文件。允许读或追加。文件必须存在,否则打开失败。打开后,文件内部的位置指针指向文件尾。可在文件尾追加数据,也可将位置指针移到某个位置,读取文件内容。,上述的每种方式都可以加一个b字符,如rb、wb、ab、rb+、wb+、ab等,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。 2、关闭文件(fclose) 文件使用之后必须关闭。可以使用fclose函数关闭文件,格式如下: int fclose(文件类型指针); fclose()用来关闭先前用fope

8、n()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。关闭文件则断开文件类型指针与该文件间的联系,也就禁止对该文件进行操作。若关闭成功则返回0,有错误发生时则返回EOF。,10.1 文件知识简要介绍,10.1.3 顺序读写和随机读写 顺序读写和随机读写,也称为顺序存取和随机存取。 顺序读写是:从文件首到文件尾,一个字节接着一个字节地顺序读写,读写完第一个字节,才能读写第二个字节,读写完第二个字节,才能读写第三个字节,。 随机读写是:利用后面介绍的fseek和rewind函数,可以使文件内部的位置指针指向文件的任意一个位置,从该位置开始读写。,10.1 文件知识简要介

9、绍,10.1.4 定位与检测 1、 将文件内部的位置指针重新定位到文件首 可以使用rewind函数将文件内部的位置指针重新定位到文件首,使用格式如下: rewind(文件类型指针); 例如:rewind(fp); fp指向某个文件,rewind函数无返回值。当操作某一个文件时,例如,读取文件内容,文件内部的位置指针会顺序向后移动,当文件的所有内容读取完毕后,文件内部的位置指针已经指向了文件尾,此时,如果再想重新读取文件内容,必须使用rewind函数将文件内部的位置指针重新定位到文件首,否则无法读取文件内容。 注意:刚打开文件时,文件内部的位置指针定位在文件首。,10.1 文件知识简要介绍,2

10、、将文件内部的位置指针移动到指定的位置 可以使用fseek函数将文件内部的位置指针移动到指定的位置,使用格式如下: fseek(文件类型指针,位移量,起始点); fseek函数的第一个参数是“文件类型指针”,指明了要操作哪一个文件。第二个参数是“位移量”,指明了从“起始点”开始移动的字节数,位移量必须是长整型数据,加后缀“L”;如果位移量是正整数,则表示文件内部的位置指针是向文件尾方向移动,若是负整数,则表示文件内部的位置指针是向文件首方向移动。第三个参数是“起始点”,指明了移动时的起始位置,起始点有3种取值,分别代表文件首、文件尾和当前位置,如下所示: 符号常量 数值 含义 SEEK_SET

11、 0 从文件首开始移动 SEEK_CUR 1 从文件的当前位置开始移动 SEEK_END 2 从文件尾开始移动,10.1 文件知识简要介绍,3 、检测文件位置指针是否到达文件尾 可以使用feof函数检测文件位置指针是否到达文件尾,使用格式如下: feof(文件类型指针); 若到达文件尾,则feof函数返回一个非0值(真),否则返回0(假)。 当我们对文件进行操作时,例如顺序读取文件的所有数据,可以使用该函数来判断文件内容是否结束,若文件内容没有结束,则继续读取数据,否则结束读取操作。 4、 检测文件位置指针的当前位置 可以使用ftell函数检测文件的位置指针的当前位置,使用格式如下: 长整型变

12、量=ftell(文件类型指针); 若调用ftell函数成功,ftell函数的返回值是从文件首到位置指针所指当前位置的总的字节数(长整型),否则返回值是-1L。,10.1 文件知识简要介绍,5 、检测读写错误 可以使用ferror函数检测在用各种输入输出函数读写文件时是否出错,使用格式如下: ferror(文件指针); ferror函数返回值为0表示未出错,否则表示有错。执行fopen函数时,ferror函数的初始值自动置为0。 6 、设置文件的错误标志和结束标志为0 可以使用clearerr函数将文件的错误标志和文件结束标志设置为0,使用格式如下: clearerr(文件指针); 如果文件发生

13、了输入输出错误,其错误标志被置为非0,该值会一直保持到再一次调用输入输出函数或者使用clearerr函数才会改变。文件刚打开时,错误标志为0。,10.1 文件知识简要介绍,1、一个字符的读写 可以使用fgetc函数从文件类型指针指向的文本文件的当前位置读取一个字符,使用格式如下: fgetc(文件类型指针); 函数的返回值是从文件类型指针指向的文本文件的当前位置读取的一个字符的ASCII码值。如果读到文件结束符(z)或读取不成功,则返回EOF(-1)。从文件读取一个字符后,文件的当前位置将后移一个字节。 可以使用fputc函数向文件类型指针指向的文本文件的当前位置写入一个字符,使用格式如下:

14、fputc(字符表达式, 文件类型指针); “字符表达式”代表要写入的字符,字符表达式可以是字符常量或字符变量。如果写入成功,则函数的返回值是所写入字符的ASCII码值,否则返回EOF(-1)。向文件写入一个字符后,文件的当前位置将后移一个字节。,10.1.5 读写文件,2、 整块数据的读写 可以使用fread函数从文件中读取整块数据,使用格式如下: fread(buffer, size, count, fp); 格式中的buffer是存放数据的存储空间的起始地址,size是数据块的大小(字节数),count是读的块数;fp是文件类型指针。使用fread函数每次从fp指向的文件中可读取的字节数

15、是size与count的乘积。如果fread函数的返回值等于count,则执行本函数读取数据成功;如果文件结束或发生错误,返回0。 可以使用fwrite函数将整块数据写入文件,使用格式如下: fwrite(buffer, size, count, fp); 格式中的buffer是存放数据的存储空间的起始地址,size是数据块的大小(字节数),count是读的块数;fp是文件类型指针。使用fwrite函数每次将从起始地址buffer开始的size*count个字节的数据写入fp指向的文件里。如果fwrite函数的返回值等于count,则执行本函数写入数据成功,否则返回0。,10.1 文件知识简要

16、介绍,3 、按照指定格式读写 可以使用fscanf函数按照指定格式从文件中读取数据,使用格式如下: fscanf(文件类型指针, 格式字符串, 输入项地址列表); fscanf函数是按照“格式字符串”所指定的格式,从“文件类型指针”所指向的文件的当前位置读取数据,然后按“输入项地址列表”的顺序,将读取到的数据存入指定的内存单元中。fscanf函数的返回值是读取的数据个数;如果遇到文件结束符或读取不成功,则返回EOF(-1)。 可以使用fprintf函数按照指定格式将数据写入文件中,使用格式如下: fprintf(文件类型指针, 格式字符串, 输出项列表); fprintf函数是按照“格式字符串”所指定的格式,将“输出项列表”中指定的各项的值写入“文件类型指针”所指向的文件的当前位置。如果写入成功,fprintf函数的返回值是写入文件中的字符个数(或字节个数),否则返回EOF(-1)。,10.1 文件知识简要介绍,可以使用fgets函数从文件中读取一串字符,使用格式如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号