《c/c++之文件》

本章重点:文件的概念,操作文件的两种方式随即存取和顺序存取,操作文件的一般步骤:打开,存取,关闭。【文件的概念】按照文件的逻辑结构分类可以分为两类:记录式文件 和 流式文件记录式文件:是一种有格式的文件,每个文件由若干个记录构成,每条记录由若干项组成。@@important 记录是文件存取的最小单位,字段是计算机能独立处理的最小单位。数据库文件是一种记录式文件。流式文件 :是一种无结构文件,文件是一个字符流或者二进制流,文件的存取以字符(字节)或二进制位为单位,输入输出数据流的开始和结束只受程序控制而不受物理符号(换行符)控制,c/c++语言的文件就是流式文件。流式文件又分为文本文件(ASCII文件)和二进制文件两类。区别 : 文本文件以字符为单位,一个字符占一个字节,按ASCII码存放。例如浮点数10.00000在文件中占8个字节,若写成10.0则占4个字节,数据的存放形式与数据本身的表示合适密切相关。二进制文件以二进制位为单位,数据按照其在内存中的储存方式直接放到文件中。例如对于浮点数9.0不管写成什么形式,它都占4个字节。使用的不同:文本文件可以直接阅读,也可以按字符逐个处理,但是当把内存中的数据写入到此类文件时要先将二进制码专程SCII码,当把此类文件读入内存时也要先把ASCII码转换成二进制码,因此占用空间大,存储速度慢。二进制文件多用于储存中间结果,以便可以直接存入内存。【c语言中的文件操作】一般步骤: 1)包含 stdio.h头文件 2)定义文件指针 FILE *fp;储存fopen();打开的资源,一个指针不能同时指向多个文件,一个文件不能有几个不同的文件指针。 3)读写文件fputc();fgetc();||fputs();fgets();||fprintf();fscanf();fwrite();fread(); 4)关闭文件fclose(fp); 注意具体操作中要对文件指针进行有效性判断 FILE *fopen(name,mode);返回文件在内存中的起始地址。失败返回null mode: r 可读方式打开 r+以读写方式打开文件 w 可写方式打开,如果不存在则创建存在则长度截取为0, w+以读写方式打开文件,文件不存在则创建,存在就长度截断为0 a 添加方式打开,如果不存在则创建存在则在末尾追加, a+可读和添加方式打开,文件不存在则创建,存在就末尾追加。 b 对象为二进制文件 int fclose(FILE *fp);成功时返回0,失败返回非0 【文件的读写】【字符读写】 fputc(ch,fp);ch为字符常量或者字符型变量,成功返回ch,失败返回EOF fgetc(fp);成功则返回读取的字符,失败和结束返回EOF 【字符窜读写】 fputs(char *s,FILE *fp);s字符型指针变量,成功则返回换行符,失败返回EOF fgets(char *s,int n,FILE *fp);s存放读取进来的字符串,n读取的长度,成功则返回读取到的字符串,失败则返回空指针,这时s中的内容不确定。【格式读写操作】 fscanf(fp,format,arg0,arg1,...,argn);如果成功则返回写入文件的字符个数,失败返回负数。 fprintf(fp,format,arg0,arg1,...,argn);成功返回输入项的个数,如果遇到文件尾,返回EOF;如果赋值失败则返回0. 这两个函数操作过程中都涉及到二进制与字符串之间的转换。【数据块读取操作】 fwrite(buf,size,count,fp);buf是指针变量,存放写入的数据;size计算要写入的每个数据项的长度(字节数);count,数据项的个数;如果执行成功则返回fwrite()实际写入的数据项数;若写入失败呢?若所写入的数据项数少于实际需要的数据项则出错。 fread(buf,size,count,fp);再读入过程中,会自动把回车符和转义序列转换成换行符。该函数的返回值为实际读入的数据项个数。出错或者读到文件尾的情况必须要用检测函数ferror()和feof()来判断。【文件检测函数】 feof(fp);专门用作检测二进制文件的结束标志,因为二进制文件中-1是个有效数据,但字符文件中的ascii码不可能取负值。返回非0值则到结尾。 ferror(fp);非0值表示读取文件出错。 clearerr(fp);清除ferror(fp);返回的非0标志,只有被清除才能消失,不会自动消失。【文件的定位】 rewind(fp);将指针指向文件的开头。成功0,失败非0。 ftell(fp);成功返回距离文件开头的字节数,失败返回-iL。 fseek(fp,offset,orng);offset偏移量,orng基址,只能取下面表中的符号名符号名 值 含义 SEEK_SET 0 文件开头 SEEK_CUR 1 当前位置 SEEK_END 2 文件结尾【文件随机读取和顺序读取】文件的随机存取是将数据写入文件指定的位置或者从指定的位置读取数据文件中一个独立的数据单位成为一个记录,随机文件要求每个记录的长度必须相等,而顺序文件中的记录长度可以不相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值