




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二进制文件读写分析有关TXT文件以及bin文件处理的测试代码int main() /fstream file(D:test.dat,ios_base:in|ios_base:out|ios_base:app); fstream file; file.open(D:test1.dat,ios_base:out); int temp10 = 0x11,0x13,0x14,0x1F,0x1D,0x11,0x11,0x12,0x11,0x11; int temp110; file.write(char *)temp,sizeof(temp); file.close(); file.open(D:test1.dat,ios_base:in); file.read(char *)temp,sizeof(temp); unsigned int i; coutsizeof(temp)endl; for(i = 0;i sizeof(temp)/sizeof(unsigned int);i+) temp1i = tempi; couttempiprojectId = U; test1-password = 0x12; for(int i = 0;i someThingsi = tempi; test1-sm = (unsigned long)0x41; test1-fuck = M; file.write(char *)test1,sizeof(test); file.close(); test *test2 = (test *)malloc(sizeof(test); file.open(D:test1.dat,ios_base:in); file.seekg(0x28); file.read(char *)test2,sizeof(test); for(int i = 0;i 10;i +) coutsomeThingsiendl; file.close(); return 0;有关bin文件处理的测试笔记 我一直以为自己很熟悉如何使用C/C+中的二进制文件,可今天测试的时候突然发现程序生成的二进制文件和文本文件一样。比如:FILE* fp = fopen(binary,wb);/FILE* fp = fopen(character.txt,w);fprintf(fp,count is %d,250);上述代码一个使用的是text file mode,一个是binary file mode,但结果生成的二进制文件中保存的仍然是ASCII 码,直接用记事本就可以打开查看。要说区别,主要是换行符的区别,binary file 的换行符为,而text file 的换行符为,仅此而已,我就想怎么回事啊,我明明是用二进制模式打开的文件呀,怎么里面直接保存的还是ASCII 码?也就是说保存125 这个数字还是会占用3 个字节,而不是我想象中那样只占一个字节!后来我就换用C+,结果还是一样,代码如下:ofstream fs(binary,ios:binary);/ofstream fs(character.txt);int i = 32765;fsiendl;/fs.write(char*)&i,2);fs.close();无论以二进制文件模式打开还是以文本模式打开,文件中都是保存着文本!似乎C/C+中的binary 模式不起作用!?!后来查阅资料才知道:要想在C/C+中将数据以二进制形式文件输出,与你打开文件时的模式没有关系,关键是取决于你调用哪个函数往文件里写东西!只有使用fwrite 和fs.write()函数才能以二进制形式输出到文件中,调用puts、fprintf、等函数输出的都是ASCII 文本,尤其需要注意的是类似于上面代码段中那样,在C+中,即使你用fsiendl 语句来输出一个整数,输出到二进制文件中的仍然是文本格式!来读取以二进制文件格式存储的整数!(注:中午我试过了,不行!这再次证明只能读入文本格式的数字)今天终于弄明白怎样使用C+读写二进制文件了。要读取文件必须包含头文件,这里包含了C+读写文件的方法。可以使用fstream 类,这个类可以对文件进行读写操作。1、打开文件。打开文件可以有两种方式,第一种可以使用fstream 类的构造函数。fstream file(test.dat,ios_base:in|ios_base:out|ios_base:app);另外一种方法就是使用open 函数。fstream file;file.open(test.dat,ios_base:in|ios_base:out|ios_base:app);这样就可以打开一个可读写的文件了。如果文件不存在的话,就会创建一个新文件并且以读写方式打开。这里需要说明一点,如果文件不存在的话,open 函数中第二个参数必须包含ios_base:out|ios_base:app,2、写文件。先进性写文件的操作否则读一个空文件是没有意义的。既然是写二进制文件可以向文件中写入一个整形值。写二进制字符只能使用write 函数。但是write 函数的原形是write(const char * ch, int size)。第一个参数是char *类型,所以需要把将要写入文件的int 类型转换成char *类型。这里的转换困扰了我好几天,不过终于弄明白了。代码如下。int temp;file.write(char *)(&temp),sizeof(temp);3、读文件。可以写文件了,读文件就好办多了。读文件需要用到read 函数。其参数和write 大致相同,read(const char * ch, int size)。要把内容读到int 类型变量中同样涉及到一个类型转换的问题。和写文件一样。int readInt;file.read(char *)(&readInt),sizeof(readInt);这样文件中的int 值就读入到int 型变量readInt 中了。4、文件指针。在文件的读写过程中往往需要对文件进行选择性读取。所以需要进行文件指针的移动。这是需要用到seekg 和seekp 函数。在fstream 类中有两个文件指针,一个是读取文件的指针,一个是写文件的指针分别用tellg 和tellp 文件来取得指针的位置。同样seekg 和seekp 两个函数分别是对这两个指针进行移动的函数。这两个函数的参数都是一样的。先对几个枚举类型进行一下说明:ios_base:beg 文件开始位置ios_base:cur 文件当前位置ios_base:end 文件末尾位置下面以seekg 为例说明一下指针移动的方法:file.seekg(3) 指针移动到第三个字符的位置file.seekg(ios_base:beg) 指针移动到文件开头file.seekg(ios_base:end) 指针移动到文件末尾file.seekg(-3,ios_base:cur) 指针当前位置向前移动三个字符file.seekg(3,ios_base:cur) 指针当前位置向后移动三个字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中共江西省委党校(江西行政学院)高层次人才招聘27人考前自测高频考点模拟试题附答案详解
- 2025广东清远市英德市招聘教师222人考前自测高频考点模拟试题及答案详解1套
- 溺水防护自救知识培训课件
- 2025湖南省怀化学院高层次人才公开招聘100人考前自测高频考点模拟试题及答案详解一套
- 2025年滁州市机械工业学校公开引进教育紧缺人才8人模拟试卷及答案详解(全优)
- 工学学士考试试题及答案
- 合肥财经笔试题目及答案
- 田野考古专业知识培训班课件
- 2025江苏省人民医院宿迁医院(宿迁市第一人民医院)高层次人才引进48人考前自测高频考点模拟试题及答案详解(历年真题)
- 田螺姑娘课件解说
- 眼科护理常见不良事件文件
- 7.2 共建美好集体 课件-2024-2025学年统编版道德与法治七年级上册
- 烧伤病人护理(查房)
- 生物人教版七年级(上册)第一章第一节 生物的特征 (共28张)2024版新教材
- 肺结节诊治中国专家共识(2024年版)解读
- (华中师大版)五年级信息技术全册教案设计
- 第12课后印象派与西方现代派美术省公开课金奖全国赛课一等奖微课获奖课件
- 2024-2030年中国旅行社运作模式及经营效益预测报告
- 《房地产开发与经营》全套教学课件
- 中国书法艺术智慧树知到期末考试答案章节答案2024年中国美术学院
- 国家为什么会失败
评论
0/150
提交评论