欢迎来到天天文库
浏览记录
ID:50351083
大小:988.50 KB
页数:55页
时间:2020-03-08
《C语言程序设计 教学课件 作者 崔永君 彭静 全书第11章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章 文件11.1C文件概述11.2文件的打开与关闭11.3文件的输入和输出11.4文件的定位11.5文件的错误检测及错误处理函数11.1C文件概述文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类:①按文件所依附的介质来分,有卡片文件、纸带文件、磁带文件、磁盘文件等;②按文件内容来分,有源文件、目标文件、数据文件等;③按文件中数据组织形式来分,有字符文件和二进制文件。从用户的角度来看,文件可分为普通文件和设备文件两种。普通文件是指驻留在磁盘或其他外部介质上的一个有序数据集,可以是源文件、目
2、标文件、可执行程序;也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、可执行程序可以称做程序文件,对输入输出数据可称做数据文件。设备文件是指与主机相连的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也看做一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。 通常把显示器定义为标准输出文件,一般情况下在屏幕上显示有关信息就是向标准输出文件输出数据,如前面经常使用的printf、putchar函数就是这类输出。canf、getchar函数就属于这类输入。从文件编码的方式来看,文件可分为A
3、SCII码文件和二进制码文件两种。ASCII码文件也称为文本文件、字符文件或正文文件,它是按字符来存储的,具有可读性。这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。二进制文件是以二进制的方式存储的,不具备可读性,但从存储空间的利用来看,因为它是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放的,所以相对节省了空间。比如一个整数10000,在内存中占2个字节,如果按ASCII码形式输出,则占5个字节,而按二进制形式输出,则在磁盘上只占2个字节。11.2文件的打开与关闭1.文件类型指针 文件的属性包括文件的名字
4、、文件的性质、文件的当前状态等。ANSIC为每个被使用的文件在内存开辟了一块用于存放上述信息的小区,利用一个结构体类型变量来存放。该变量的结构体类型由系统取名为FILE,在头文件stdio.h中定义如下:typedefstruct{int_fd;/*文件号*/int_cleft;/*缓冲区中的剩余字符*/int_mode;/*文件的操作模式*/char*_next;/*下一个字符的位置*/char*_buff;/*文件缓冲区的位置*/}FILE;定义文件指针的一般形式如下:FILE*fp1,fp2;按照定义,fp1和fp2均为指向结构体类型的指
5、针变量,分别指向一个可操作的文件,换句话说,一个文件有一个文件变量指针,今后对文件的访问,会转化为针对文件变量指针的操作。2.文件的打开fopen函数用来打开一个文件,其调用的一般形式如下:FILE*fp;fp=fopen(文件名,使用文件方式); 例如:FILE*fp;fp=("filea","r");文件的打开方式见表11.1,其中列出了各种文件的打开方式。(1)凡是打开方式字符串中含有字符“r”的,则所打开的文件必须是已存在的文件,对不存在的文件不能打开读。(2)凡是打开方式中带有“w”字符的,则所打开的文件可以是已经存在的,也可以是
6、尚不存在的。若不存在,则先要建立一个新文件,然后在里面写内容;若文件已经存在,则会把原文件的内容覆盖掉,写入新的内容。(3)凡含有字符“a”的,以追加方式打开的文件也可以不存在,若不存在则建立一个新文件后再追加;若已存在,则在文件的尾部追加。(4)以“r+”和“w+”方式打开的文件都是既可用于读,又可用于写的。其差别是,以“w+”方式打开的是一个新文件,应先写入内容,然后可以读。(5)在打开文件的操作中有可能出现故障,如当文件所在的磁盘未准备好时,不能把文件打开,这时打开文件函数fopen就返回NULL值。(6)有三个和标准输入/输出流对应的设
7、备文件不需用户打开,在执行程序时,系统自动将它们打开。这三个文件是标准输入文件、标准输出文件和标准出错文件,指向它们的文件指针分别是stdin、stdout和stderr。3.文件的关闭 在文件处理的最后,缓冲区中可能尚有一些数据,关闭操作首先把这些数据送入磁盘文件,然后再释放文件指针。因此,如果不关闭文件,则留在缓冲区中的数据就会丢失。关闭文件用fclose函数,其格式如下:fclose(文件指针名)例如:fclose(fp);11.3文件的输入和输出1.文件的字符输入/输出函数1)fgetc函数fgetc函数的调用格式:<字符变量>=f
8、getc(<文件指针>)功能:从<文件指针>所指的文件中读入一个字符赋给<字符变量>(在内存中)。例如:ch=fgetc(fp);其意义是从打开的文件
此文档下载收益归作者所有