欢迎来到天天文库
浏览记录
ID:50351052
大小:117.00 KB
页数:23页
时间:2020-03-08
《C语言程序设计 教学课件 作者 徐秋红 第10章文件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章文件文件重点介绍以下几个方面的内容:介绍文件的基本概念;介绍如何利用标准库函数打开文件、关闭文件、建立文件;介绍利用标准库函数定位文件读写指针,以多种方式读写文件内容的方法;介绍如何在文件操作的执行中对文件实施检测。文件的基本概念文件是程序设计中一个很重要的概念。所谓“文件”一般指存储在外部介质上数据的集合。数据流是以文件的形式存放在外部介质(如磁盘、磁带)上的。操作系统是以文件为单位对数据进行处理。如果想查找存储在外部介质上的某个或某些数据,必须先按文件名找到包含这些数据的文件,然后再从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文
2、件(以文件名标识),将数据组织在此文件中,并以文件形式写到存储介质(磁盘)上。文件的基本概念根据数据的组织形式,文件可分为ASCII文件和二进制文件。ASCII文件又称文本(text)文件,它的每一个字节存放一个ASCII代码,即每一个字节表示一个字符。二进制文件是把内存中的数据按其存储形式,以二进制码形式形成文件,再存储到磁盘上。ASCII形式0011000100110000001100000011000000110000内存中存储形式100000010011100010000二进制形式0010011100010000有一个整数10000,它的二进制表
3、示形式在内存中占2个字节;如果按ASCII码形式输出,则需要5个字节表示,而按二进制形式输出,则表示形式只占2个字节。文件的基本概念用ASCII码形式输出数值:每一位数据对应一个字符,一个字符用一个字节(ASCII码)代表,因而便于对字符进行逐个处理,也便于输出字符,但一般占存储空间较多。用二进制形式输出数值,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。一般中间结果数据需要暂时保存在外存上以备再需要输入到内存时,常用二进制文件保存。文件的基本概念但无论是文本文件还是二进制文件,C都把数据看作是一连串字节,即C对文件的存取
4、是以字节为单位的,输入输出的数据流仅受程序控制,所以我们说C文件就是字节流文件,简称为流式文件。在C语言中对文件的处理方法有两种,一种是缓冲型文件系统:是指系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,作为程序与磁盘文件间数据交流的中间媒介。即在读写文件时,数据先送到缓冲区,再传给C程序或传到磁盘上。另一种是非缓冲型文件系统:是指系统不会自动设置缓冲区,而由程序为每个文件设定缓冲区。TurboC则使用的是缓冲型文件系统。文件类型指针每个被使用的文件都由系统在内存中自动开辟一个特殊区域,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等
5、),这些信息保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE,在stdio.h文件中的FILE结构体类型的结构内容是:文件类型指针typedefstruct{shortlevel;/*缓冲区“满”或“空”的程度*/unsignedflags;/*文件状态标志*/charfd;/*文件描述符*/unsignedcharhold;/*如无缓冲区不读取字符*/shortbsize;/*缓冲区的大小*/unsignedchar*buffer;/*数据缓冲区的位置*/unsignedchar*curp;/*指针,当前的指向*/unsignedi
6、stemp;/*临时文件,指示器*/shorttoken;/*用于有效性检查*/}FILE;文件类型指针可以用结构体FILE类型来定义若干个FILE类型的变量,以便存放若干个文件的信息。例如,可以定义以下FILE类型的数组。FILEf[5];定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。可以定义文件型指针变量。如:FILE*fp;fp是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。也就是说,通过文件指针变量能够找到与它相关的文件。文件的操作文件的打开与关闭f
7、open(“文件名”,“文件打开模式”)在正常情况下,fopen函数的主要功能是为需要打开的文件分配一个缓冲区,并返回该缓冲区的首地址,因此该地址就是该函数的返回值,它是一个指向FILE类型的指针。即应该将fopen函数的返回值赋给一个文件类型的指针变量,例如:FILE*fp;/*定义fp为文件类型的指针变量*/fp=fopen(“d:\myfile.txt”,“r”);文件打开模式含义“r”(只读)为输入打开一个文本文件“w”(只写)为输出打开一个文本文件“a”(追加)向文本文件尾增加数据“rb”(只读)为输入打开一个二进制文件“wb”(只写)输出打
8、开一个二进制文件“ab”(追加)向二进制文件尾增加数据“r+”(读写)为读/写打
此文档下载收益归作者所有