资源描述:
《关于FILE指针的使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、关于FILE指针使用语言文件系统称为流文件(Stream),正文流(正文文件),二进制流(二进制文件)缓冲与非缓冲文件顺序操作文件与随机操作文件顺序文件:读/写第K个数据块之前必须读/写第1至K-1个数据块;随机文件:可直接读/写第K个数据块;正文文件的操作一般是顺序文件;二进制文件的操作都是随机文件。一、文件操作的一般过程定义文件指针FILE*打开文件fopen对文件进行读写二、系统已定义的与文件操作有关的数据结构全都在stdio.h中1FILE结构体 FILE*fr,*fp,*fw;FILE*指针作为文件句柄,是文件访问的唯一标识,它由fopen
2、函数创建,fopen打开文件成功,则返回一个有效的FILE*指针,否则返回空指针NULL2标准文件指针 FILE*stdin,*stdout,*stderr, stdin指键盘输入 stdout指显示器 stderr指出错输出设备,也指显示器这些变量已成功初始化,可直接使用.三、常用操作函数1fopen格式:FILE*fopen(文件名字符串,打开方式串)例:FILE*fr;fr=fopen("c:\user\abc.txt","r");字符串操作:1)"r"或"rt":正文文件只读方式打开。文件不存在,则打开失败(顺序读)"w"或"wt"
3、:正文文件只写方式打开。若文件不存在,则建立文件;若文件存在,则删除文件内容,重建空文件(顺序写);(截取文件长度为0)2)"a"或"at":正文文件添加方式。文件不存在,则建立文件(顺序添加写)3)"r+"或"rt++":正文文件读写打开,文件不存在,则打开失败(顺序读/写、随机读/写,含改写与添加);4)"w+"或"w++":正文文件读写方式打开,文件不存在,则建立文件;否则截取文件长度为0(顺序读/写,随机读/写,对写入的内容可以读或改写或添加)5)~b:正文文件→二进制文件 顺序读→顺序/随机读(“rb”) eg:"r"或"rt"→"rb"
4、顺序写("wb") 顺序添加写("ab") 顺...,随...,含...("rb+") 顺...,添加("wb+") 顺...,添加("ab+")使用fopen时,但凡含r字母的打开方式,一定要加判断,文件是否打开成功,否则程序不会报告错误,会运行下去。如:FILE*fr;fr=fopen("abc.txt","r");if(fr==NULL){printf("Filenotopen!");return;/*或exit(1);*/1文件关闭fclose(FILE*fp)一般地,fclose(fp)与fopen应配对使用,特别是含有写方式的文
5、件,若不关闭会造成文件数据丢失。fcloseall(void):关闭当前所有打开的文件。2单字节的输入函数可适用于二进制与正文文件操作intfgetc(FILE*fp) intfputc(charch.FILE*fp)fgetc的返回值都是正数(0~255)文件无可读字节则返回-1(EOF)正文文件与二进制文件读写的区别:正文文件读到1310时,将自动跳过13,读出10并返回;正文文件写入10时,首先自动写入13再写入10.1文件指针与文件指针操作函数文件指针是文件操作系统数据结构内部的一种数据指针,它用于标注文件当前读写位置,C语言中,文件指针以字
6、节为单位,文件第一个字节位置号为0,若文件长度为N个字节,则最后一个字节的位置号为N-1,长度为N字节的文件有效读写范围为0~N-1。指针位置在此之外进行读/写操作,则失败;读写函数返回-1(EOF);C语言的文件指针采用long型值;执行文件读/写操作后,文件指针自动向后移动,指到新的待读/写位置。文件指针移动函数rewind(FILE*fp)文件指针重置为0fseek(FILE*fp,longoff,intpos) 从pos位置开始,移动off个字节。pos:0文件开始 1文件当前指针位置 2文件结尾(文件长度为N,则指针位置为N
7、)例:fseek(fp,0l,0);←→rewind(fp)fseek(fp,-1L,2);/*移动指针到最后一个字节*/fseek(fp,-2L,1);/*移动指针到当前位置的前两个位置*/longftell(FILE*fp)求当前指针位置例:求文件长度fseek(fp,OL,2);len=ftell(fp);则len为文件长度文件指针的特性:可在“负无穷”到“正无穷”任意移动;在0~N-1之外进行读操作,则读失败;读失败后,feof函数为真;从N位置开始写入,则为添加;从0~N位置之外开始写也可,其行为不必掌握,因为几乎无用;无论任何方式,刚打开文
8、件时,ftell函数返回值都是0,含a方式的文件,只要一写(第一次写),文件指针自动移动到N位