我有一个.cli的文件,但是我知道他的结构,我用下面程序,读文件:
int main()
{
ifstream in;
string filename;
getline(cin,filename,'\n');
in.open(filename);
if (!in)
{
cerr << "打开文件出错!" << endl;
}
else
{
char ch;// [8] = { 'a','b','b','b','b','b','b','b' };
int f = 0;
while (!in.eof())
{
in.read(&ch, 1);
f++;
cout << ch;
}
}
in.close();
getchar();
return 0;
}
运行结果如下图:
$$HEADERSTART
$$BINARY
$$UNITS/00000000.005000
$$VERSION/200
$$LABEL/1,part1
$$DATE/141217
$$DIMENSION/00000046.417800,00000041.423800,00000000.000000,00000056.417800,00000051.423800,00000009.975000
$$LAYERS/000400
$$HEADEREND€ % ,_ ,(,(,#(,$(,&(,&(,'(,'(,((,)(,)(,)(,*(,*(,*(,+(,+(,+(,+(,+(,-(K$-(K$-(K$-(K$-(K$-(H$-(E$-(D$-(D$-(D$+(D$v D$] ?
不知道有没有高手,可以向我指点一二,位置结构的二进制文件如何读取?
参考一下吧
http://c.biancheng.net/view/302.html
你自己都说了,未知格式,所以你第一步就是应该逆向分析它的格式,你需要读取的数据是什么。看上去你读取到一些内容,有文本,有不可读的二进制数据。
这个文件是不是什么程序生成的,如果是,你在那个程序里对这个文件尝试做一个修改,然后比较修改前后的区别,就可以知道哪里存储了这个修改,再根据你已知的值分析它以何种形式存储在文件里的。
(这个过程有点类似分析游戏修改的内存,只是一个是内存,一个是文件)
分析好了,再写程序就简单了。