标题:怎么打开二进制文件
1.如何读取二进制文件
快速读取二进制文件的方法如下:1、打开文件。打开文件可以有两种方式,第一种可以使用fstream类的构造函数。fstreamfile("test.dat",ios_base::in|ios_base::out|ios_base::app);另外一种方法就是使用open函数。fstreamfile;file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);这样就可以打开一个可读写的文件了。如果文件不存在的话,就会创建一个新文件并且以读写方式打开。这里需要说明一点,如果文件不存在的话,open函数中第二个参数必须包含ios_base::out|ios_base::app,否则就不能正确创建文件。2、写文件。先进性写文件的操作否则读一个空文件是没有意义的。既然是写二进制文件可以向文件中写入一个整形值。写二进制字符只能使用write函数。但是write函数的原形是write(constchar*ch,intsize)。第一个参数是char*类型,所以需要把将要写入文件的int类型转换成char*类型。这里的转换困扰了我好几天,不过终于弄明白了。代码如下。inttemp;file.write((char*)(&temp),sizeof(temp));3、读文件。可以写文件了,读文件就好办多了。读文件需要用到read函数。其参数和write大致相同,read(constchar*ch,intsize)。要把内容读到int类型变量中同样涉及到一个类型转换的问题。和写文件一样。intreadInt;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)——指针当前位置向后移动三个字符file.seekg(3,file.tellg())——指针当前位置向后移动三个字符file.seekg(file.tellg()+3)——指针当前位置向后移动三个字符5、对文件操作完毕后别忘了关闭文件。
2.如何用ultraedit以二进制形式查看txt文件
cfg文件是配置文件,常常命名为*。没有固定的打开方式1。用途也仅仅是保存用户的设置:注册表。一般用notepad(记事本)就可以打开。
大多数情况下,日志文件……而很多程序都使用了一个专用的文件,特性的文件。
2。为了方便起见,比如QUAKE的config.一般是软件的配置文件。
但要看具体什么软件
cfg/,可以用ultraedit查看其内容,没有固定格式,这只是一个为开发及使用方便而“发明”的一个后缀名.cfg,都是软件作者自定义的参数配置,为了方便起见,可能是二进制文件。可以用任何文本编辑器打开,也可能是文本文件
3,系统或应用软件用于进行配置自己功能,有时甚至直接命名为Config,很多程序都要保存用户的设置。
所以,平常没有必要打开;config的缩写
这种文件没有固定的格式.cfg.cfg.通常配置文件的扩展名,里面的内容大多数时候也确实是文本,办法有很多。
同样,其实也并不能算作是一种文件类型
3.如何快速读取二进制文件
快速读取二进制文件的方法如下:
1、打开文件。
打开文件可以有两种方式,第一种可以使用fstream类的构造函数。fstreamfile("test.dat",ios_base::in|ios_base::out|ios_base::app);另外一种方法就是使用
open函数。fstreamfile;file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);
这样就可以打开一个可读写的文件了。如果文件不存在的话,就会创建一个新文件并且以读写方式打开。这里需要说明一点,如果文件不存在的话,open函数中第二个参数必须包含ios_base::out|ios_base::app,否则就不能正确创建文件。
2、写文件。
先进性写文件的操作否则读一个空文件是没有意义的。
既然是写二进制文件可以向文件中写入一个整形值。写二进制字符只能使用write
函数。但是write函数的原形是write(constchar*ch,intsize)。第一个参数是char*
类型,所以需要把将要写入文件的int类型转换成char*类型。这里的转换困扰了我好几天,不过终于弄明白了。代码如下。inttemp;file.write((char*)(&temp),sizeof(temp));
3、读文件。
可以写文件了,读文件就好办多了。读文件需要用到read函数。其参数和write
大致相同,read(constchar*ch,intsize)。要把内容读到int类型变量中同样涉及到一个类型转换的问题。和写文件一样。intreadInt;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)——指针当前位置向后移动三个字符file.seekg(3,file.tellg())——指针当前位置向后移动三个字符file.seekg(file.tellg()+3)——指针当前位置向后移动三个字符
5、对文件操作完毕后别忘了关闭文件。
4.C++中怎么打开一个二进制文件
1、使用fopen函数的二进制模式“rb”就可以打开一个二进制文件。
fopen的函数原型:FILE*fopen(constchar*path,constchar*mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r以只读方式打开文件,该文件必须存在。
r+以可读写方式打开文件,该文件必须存在。
rb+读写打开一个二进制文件,允许读数据。
rw+读写打开一个文本文件,允许读和写。
w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)
wb只写打开或新建一个二进制文件;只允许写数据。
wb+读写打开或建立一个二进制文件,允许读和写。
wt+读写打开或着建立一个文本文件;允许读写。
at+读写打开一个文本文件,允许读或在文本末追加数据。
ab+读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
2、例程:
#include<stdlib.h>
#include<stdio.h>
intmain()
{
FILE*fpPhoto,*fpText,*fpTarget;
intiRead;
charszBuf[100];
printf("请输入第一个文件名(jpg): ");
gets(szBuf);
fpPhoto=fopen(szBuf,"rb");
printf("请输入第二个文件名(txt): ");
gets(szBuf);
fpText=fopen(szBuf,"rb");
printf("请输入目的文件名(jpg): ");
gets(szBuf);
fpTarget=fopen(szBuf,"wb");
if(!fpPhoto||!fpText||!fpTarget)
{
printf("打开文件失败! ");
system("pause");
return-1;
}
while((iRead=fread(szBuf,1,sizeof(szBuf),fpPhoto))>0)
fwrite(szBuf,1,iRead,fpTarget);
while((iRead=fread(szBuf,1,sizeof(szBuf),fpText))>0)
fwrite(szBuf,1,iRead,fpTarget);
fclose(fpPhoto);
fclose(fpText);
fclose(fpTarget);
return0;
}
版权声明:本文内容由极全网实名注册用户自发贡献,版权归原作者所有,极全网-官网不拥有其著作权,亦不承担相应法律责任。具体规则请查看《极全网用户服务协议》和《极全网知识产权保护指引》。如果您发现极全网中有涉嫌抄袭的内容,点击进入填写侵权投诉表单进行举报,一经查实,极全网将立刻删除涉嫌侵权内容。
扫一扫在手机打开
评论
已有0条评论
0/150
提交
热门评论







