C语言文件(重庆交大版)

上传人:宝路 文档编号:48094812 上传时间:2018-07-09 格式:PPT 页数:40 大小:247.46KB
返回 下载 相关 举报
C语言文件(重庆交大版)_第1页
第1页 / 共40页
C语言文件(重庆交大版)_第2页
第2页 / 共40页
C语言文件(重庆交大版)_第3页
第3页 / 共40页
C语言文件(重庆交大版)_第4页
第4页 / 共40页
C语言文件(重庆交大版)_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《C语言文件(重庆交大版)》由会员分享,可在线阅读,更多相关《C语言文件(重庆交大版)(40页珍藏版)》请在金锄头文库上搜索。

1、第8章第8章 文 件在程序运行时,程序本身和数据一般都存 放在内存中。当程序运行结束后,存放在内存 中的数据被释放。 如果需要长期保存程序运行所需的原始数 据,或程序运行产生的结果,就必须以文件形 式存储到外部存储介质上。8.1 概述 8.2 标准文件操作 8.3 非标准文件操作第8章8.1概述1文件与文件名文件是指存放在外部存储介质上的数据集合。为标识一个文件,每个文件都必须有一个文件名,其一般结构为:主文件名.扩展名文件命名规则,遵循操作系统的约定。第8章2文件分类可以从不同的角度对文件进行分类:(1)根据文件的内容,可分为程序文件和数据文件,程序文件又可分为源文件、目标文件和可执行文件。

2、(2)根据文件的组织形式,可分为顺序存取文件和随机存取文件。(3)根据文件的存储形式,可分为ASCII码文件和二进制文件。第8章3读文件与写文件所谓读文件是指,将磁盘文件中的数据传送到计算机内存的操作。所谓写文件是指,从计算机内存向磁盘文件中传送数据的操作。第8章4构成文件的基本单元与流式文件语言将文件看作是由一个一个的字符(ASCII码文件)或字节(二进制文件)组成的。将这种文件称为流式文件。而在其它高级语言中,组成文件的基本单位是记录,对文件操作的基本单位也是记录。第8章5文件类型FILE系统给每个打开的文件都在内存中开辟一个区域,用于存放文件的有关信息(如文件名、文件位置等)。这些信息保

3、存在一个结构类型变量中,该结构类型由系统定义、取名为FILE。注意:结构类型名“FILE”必须大写。第8章6ANSI C的缓冲文件系统 所谓缓冲文件系统是指,系统自动地在 内存区为每个正在使用的文件开辟一个缓冲 区。 从内存向磁盘输出数据时,必须首先输 出到缓冲区中。待缓冲区装满后,再一起输 出到磁盘文件中。 从磁盘文件向内存读入数据时,则正好 相反:首先将一批数据读入到缓冲区中,再 从缓冲区中将数据逐个送到程序数据区。第8章8.2标准文件的操作对文件进行操作之前,必须先打开该文件;使用结束后,应立即关闭,以免数据丢失。语言规定了标准输入输出函数库,用fopen()函数打开一个文件,用fclo

4、se()函数关闭一个文件。第8章文件的打开fopen()函数1用法: FILE *fopen(“文件名“,“操作方式“);2功能:返回一个指向指定文件的指针。3函数原型:stdio.h 。(1)“文件名”是指要打开(或创建)的文件名。如果使 用字符数组(或字符指针),则不使用双引号。 (2)“操作方式”如表8-1所示。例如,FILE *fp; fpfopen(“data.99“,“r“);注:对文件操作的库函数,函数原型均在头文件stdio.h 中。后续函数不再赘述。第8章表8-1: 文件使用方式 含 义 “r” (只读)为输入打开一个文本文件 “w” (只写)为输出打开一个文本文件 “a”

5、(追加)向文本文件尾增加数据 “rb” (只读)为输入打开一个二进制文件 “wb” (只写)为输出打开一个二进制文件 “ab“ (追加)向二进制文件尾增加数据 “r+“ (读写)为读/写打开一个文本文件 “w+” (读写)为读/写建立一个新的文本文件 “a+” (读写)为读/写打开一个文本文件 “rb+“ (读写)为读/写打开一个二进制文件 “wb+“ (读写)为读/写建立一个新的二进制文件 “ab+” (读写)为读/写打开一个二进制文件第8章3说明 (1)如果不能实现打开指定文件的操作, 则fopen()函数返回一个空指针NULL (其值在 头文件stdio.h中被定义为)。 为增强程序的可

6、靠性,常用下面的方法打开 一个文件:if(fp=fopen(“文件名“,“操作方式“)=NULL) printf(“can not open this filen“); exit(0); 第8章关于exit()函数 1)用法:void exit(程序状态值); 2)功能:关闭已打开的所有文件,结 束程序运行,返回操作系统,并将“程序状 态值”返回给操作系统。当“程序状态值”为 时,表示程序正常退出;非值时,表 示程序出错退出。第8章(2)“r(b)+”与“a(b)+”的区别:使用前者 打开文件时,读写位置指针指向文件头;使用后者 时,读写指针指向文件尾。(3)使用文本文件向计算机系统输入数据时

7、, 系统自动将回车换行符转换成一个换行符;在输出 时,将换行符转换成回车和换行两个字符。使用二进制文件时,内存中的数据形式与数据 文件中的形式完全一样,就不再进行转换。(4)有些编译系统,可能并不完全提供上述 对文件的操作方式,或采用的表示符号不同,请注 意所使用系统的规定。第8章(5)在程序开始运行时,系统自动打 开三个标准文件,并分别定义了文件指针:1)标准输入文件stdin:指向终端 输入(一般为键盘)。如果程序中指定要从 stdin所指的文件输入数据,就是从终端键 盘上输入数据。 2)标准输出文件stdout:指向终 端输出(一般为显示器)。 3)标准错误文件stderr:指向终端 标

8、准错误输出(一般为显示器)。第8章文件的关闭fcolse()函数 1用法: int fclose(FILE *文件指针); 2功能:关闭“文件指针”所指向的文件。如 果正常关闭了文件,则函数返回值为; 否则,返回值为非。 例如,fclose(fp);/*关闭fp所指向的文件*/第8章文件的读写操作文件打开之后,就可以对它进行读与写的操作 了。读写文件中的一个字符读写一个字符串 读写一个数据块 对文件进行格式化读写 读写函数的选用原则第8章读写文件中的一个字符1将一个字符写到文件中fputc()函数 案例8.1 将键盘上输入的一个字符串(以“”作为结束字符),以 ASCII码形式存储到一个磁盘文

9、件中。 /*案例代码文件名:AL8_1.C*/ /*程序功能:从键盘上输入一个字符串,存储到一个磁盘文件中*/ /*使用格式:可执行文件名 要创建的磁盘文件名*/ #include “stdio.h” main(int argc, char *argv) FILE *fp;char ch;if(argc!=2) /*参数个数不对*/ printf(“the number of arguments not correctnn“); printf(“Usage: 可执行文件名 filename n”);exit(1);第8章if (fp=fopen(argv1,“w“)=NULL) /*打开文件

10、失败*/ printf(“can not open this filen“);exit(1);/*输入字符,并存储到指定文件中*/for( ; (ch=getchar() != ; )fputc(ch,fp); /*输入字符并存储到文件中*/fclose(fp); /*关闭文件*/ 程序运行情况: abcdefg1234567第8章库函数fputc(): 1)用法:int fputc(字符数据,文件指针); 其中“字符数据”,既可以是字符常量,也可以是字 符变量。 2)功能:将字符数据输出到“文件指针”所指向的文 件中去,同时将读写位置指针向前移动1个字节(即指 向下一个写入位置)。 如果输出

11、成功,则函数返回值就是输出的字符数据 ;否则,返回一个符号常量EOF(其值在头文件 stdio.h中,被定义为-1)。第8章2从文件中读入一个字符fgetc()函数和 feof()函数 案例8.2 顺序显示案例8.1创建的磁盘ASCII码文件。 /*案例代码文件名:AL8_2.C*/ /*程序功能:顺序显示一个磁盘ASCII码文件*/ /*参数:带参主函数,使用格式:可执行文件名 源文件名*/ #include “stdio.h“ main(int argc, char *argv) FILE *fp;char ch;if(argc!=2) /*参数个数不对*/ printf(“the num

12、ber of arguments not correctn“);printf(“n Usage: 可执行文件名 源文件名“);exit(1);第8章if (fp=fopen(argv1,“r“)=NULL) printf(“can not open source filen“);exit(1);/*顺序输出文件的内容*/for(; (ch=fgetc(fp)!=EOF; ) putchar(ch); /*顺序读入并显示*/fclose(fp); /*关闭打开的文件*/ 程序运行情况: abcdefg1234567第8章(1)库函数fgetc()1)用法:int fgetc(文件指针);2)功能

13、:从“文件指针”所指向的文件中,读入一个 字符,同时将读写位置指针向前移动1个字节(即指向 下一个字符)。该函数无出错返回值。 例如,fgetc(fp)表达式,从文件fp中读一个字符, 同时将fp的读写位置指针向前移动到下一个字符。(2)关于符号常量EOF在对ASCII码文件执行读入操作时,如果遇到文件 尾,则读操作函数返回一个文件结束标志EOF(其值在 头文件stdio.h中被定义为-1)。 在对二进制文件执行读入操作时,必须使用库函数 feof()来判断是否遇到文件尾。第8章案例8.3 实现制作ASCII码文件副本的功能。 /*案例代码文件名:AL8_2.C*/ /*程序功能:制作ASCI

14、I码文件的副本*/ /*使用格式:可执行文件名 源文件名 目标文件名*/ #include “stdio.h“ main(int argc, char *argv) FILE *input, *output;/* input:源文件指针, output:目标文件指 针 */char ch;if(argc!=3) /*参数个数不对*/ printf(“the number of arguments not correctn“);printf(“n Usage: 可执行文件名 source-file dest-file“);exit(1);第8章if (fp=fopen(argv1,“r“)=NU

15、LL) /*打开源文件失败 */ printf(“can not open source filen“);exit(1);if (fp=fopen(argv2,“w“)=NULL) /*创建目标文件失败*/ printf(“can not create destination filen“);exit(1);/*复制源文件到目标文件中*/for( ; (!feof(input) ; ) fputc(fgetc(input),output); fclose(input); fclose(output);/*关闭源文件和目 标文件*/ 第8章库函数feof():1)用法:int feof(文件指针);2)功能:在执行读文件操作时,如果遇到 文件尾,则函数返回逻辑真(1);否则,则返 回逻辑假(0)。feof()函数同时适用于ASCII码 文件和二进制文件。例如,!feof(input)表示源文件(用于输入 )未结束,循环继续。第8章读写一个字符串fgets()和fputs

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

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