二进制文件的读写以及相关心得

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二进制文件读写分析

有关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 temp[10] =

{0x11,0x13,0x14,0x1F,0x1D,0x11,0x11,0x12,0x11,0x11};

int temp1[10];

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;

cout<

for(i = 0;i < sizeof(temp)/sizeof(unsigned int);i++)

{

temp1[i] = temp[i];

cout<

}

file.close();

file.open("D:\\test1.dat",ios_base::out);

temp1[6] = 0x16;

file.write((char *)temp1,sizeof(temp));

file.close();

}

file.open("D:\\test1.dat",ios_base::out|ios_base::app);

unsigned char temp[10] = {'a','b','a','a','a','d','a','C','a','a'}; test *test1 = (test *)malloc(sizeof(test));

test1->projectId = 'U';

test1->password = 0x12;

for(int i = 0;i < 10;i ++)

{

test1->someThings[i] = temp[i];

}

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 ++)

{

cout<someThings[i]<

}

file.close();

return 0;

}

有关bin文件处理的测试笔记

<1> 我一直以为自己很熟悉如何使用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;

fs<

//fs.write((char*)&i,2);

fs.close();

无论以二进制文件模式打开还是以文本模式打开,文件中都是保存着文本!似乎C/C++中的binary 模式不起作用!?!

后来查阅资料才知道:要想在C/C++中将数据以二进制形式文件输出,与你打开文件时的模式没有关系,关键是取决于你调用哪个函数往文件里写东西!!只有使用fwrite 和fs.write()函数才能以二进制形式输出到文件中,调用puts、fprintf、<<等函数输出的都是ASCII 文本,尤其需要注意的是类似于上面代码段中那样,在C++中,即使你用fs<

此外,要注意,你不能用>>来读取以二进制文件格式存储的整数!(注:中午我试过了,不行!这再次证明>>只能读入文本格式的数字)

今天终于弄明白怎样使用C++读写二进制文件了。

要读取文件必须包含头文件,这里包含了C++读写文件的方法。

可以使用fstream 类,这个类可以对文件进行读写操作。

1、打开文件。

打开文件可以有两种方式,第一种可以使用fstream 类的构造函数。

fstream file("test.dat",ios_base::in|ios_base::out|ios_base::app);

另外一种方法就是使用open 函数。

fstream file;

相关文档
最新文档