文档详情

C程序设计课件第十章.ppt

发布:2017-04-19约4.7千字共51页下载文档
文本预览下载声明
第十章 文件;文件概述;文件分类 文件是程序设计中的一个重要概念,从不同的角度看文件可以分成不同的 从操作角度看 顺序文件 随机文件 从用户角度看 普通文件 设备文件 从文件内部编码方式看 ASCII文件 二进制文件;文件名 文件名是文件的唯一标识,它的一般结构是 主文件名.扩展名 其中的扩展名可以省略,但通常都保留。 因为通过扩展名,可以判断文件类型。例如. .c C语言的源程序文件 .txt 文本文件 .doc word文档文件 ;文件名分为 绝对文件名 从磁盘盘符开始描述的文件名 相对文件名 从计算机操作系统中文件系统的某个节点开始描述的文件名 例如: E:\doc\programing\test.c 表示绝对文件名 test.c 表示相对于节 E:\doc\programing的相对文件名;顺序文件和随机文件;随机文件的特点是:对文件的操作是随机 在同一时刻,??可以向文件中写,也可以从文件中读(文件没有读写模式之分)。 读写操作可以针对文件中任意成分进行。 例如 第一次读了第100个成分 然后再读第3个成分 然后再用一个新的数据修改第50 成分 将其写入第50个成分中 然后又读第200个成分...,等等。 这是允许的,并且是正确的。 ;普通文件和设备文件;ASCII文件和二进制文件;二进制文件就是二进制码文件,它把数据按二进制编码方式存放到文件中。例如,数1234的存储形式为: 0000010011010010 只占二个字节。 用TYPE命令显示二进制文件是无意义的,其内容无法读懂。 ;流式文件;文件指针;标记;几个常量 C系统引进几个常量标志文件处理状态。最常用的是 EOF 和 NULL,它们是 stdio.h 中预定义的常量。 EOF:值为“-1” 习惯上表示文件结束,或文件操作出错; NULL:值为“0” 习惯上表示打开文件失败等。;文件操作;对应每个函数库,有一个头文件,在头文件中包含相应函数库中所有函数的函数原型。用户使用库函数时,需要把相应的头文件用 #include 命令括入到自己的程序文件中。 文件操作函数库的头文件是 “stdio.h”,在用户程序中只要涉及文件操作,即只要涉及输入输出就应该把该文件括入程序中,使用的程序行是: #include stdio.h 这就是为什么前述各个章节的程序都含有这一行的原因。;任何高级语言,对文件操作都应该遵循: 打开文件 → 操作文件 → 关闭文件 这样的过程。 下面就遵循这个规则对文件的操作进行说明 ;打开文件;fopen 根据 mode 指定的模式,打开由filename指定的文件。 例如: fp = fopen( c:\user\file.txt , r ) ; 以“只读”方式,打开 c 盘 user 节点下的 file.txt 文件。如果成功则 fp 就是文件 file.txt 的文件指针变量,并且只允许对文件进行读操作;否则 fp 的值是 NULL 。;下表给出文件打开模式 mode 及其含义。 ;7;关闭文件;读字符;写字符;读字符串;写字符串;读数据块;写数据块;格式化读写;格式化输入;格式化输出;文件定位;在对文件进行任何读写操作时,位置指针都自动向下移动相应个数的字节。如果要打破这种规律,就必须使用定位函数对位置指针重新定位。 函数rewind 和 fseek 用于位置指针定位 函数 ftell 和 feof 用于测试文件位置指针当前所处位置。; rewind( )函数 原型:void rewind( FILE *fp ); 功能:使fp所指文件的位置指针重新指向文件开始 返回值:无 ftell( )函数 原型:long int ftell( FILE *fp ); 功能:给出fp所指文件的位置指针当前所处位置。; fseek( )函数 原型: int fseek( FILE *fp, long offset, int origin); 功能: 使fp所指文件的指针指向origin+offset的位置 ; feof( )函数 原型: int feof( FILE *fp ); 功能: fp 是输入流,标志是否“读”到fp所指文件末尾,即文件是否结束。 ;例10-1 实现文本文件复制的功能; if ((output=fopen(argv[2],w))==NULL){ /*创建失败*/ printf(can not create destination file\n); exit(0); } while ( !feof(input) )
显示全部
相似文档