C程序设计课件第十章.ppt
文本预览下载声明
第十章 文件;文件概述;文件分类
文件是程序设计中的一个重要概念,从不同的角度看文件可以分成不同的
从操作角度看
顺序文件 随机文件
从用户角度看
普通文件 设备文件
从文件内部编码方式看
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) )
显示全部