众所周知,Windows上的普通应用程序由PE头开始,前两个字符是" MZ"。 所以我有一个C ++程序来打开一个exe文件并阅读它。 正如我预测的那样,显示的字符是" MZ"但是读取的整数是不可理解的,每次都不同。 那么读取的整数是什么?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifs;
ifs.open("a.exe", ios::in);
char c[2];
ifs >> c[0] >> c[1];
cout << c[0] << c[1] << endl;
ifs.close();
ifs.open("a.exe", ios::in);
int i;
ifs >> i;
cout << i << endl;
ifs.close();
return 0;
}
答案 0 :(得分:1)
尝试将文件解析为整数失败,因为文件以整数中不合法的字符开头。这会留下i
中的任何垃圾,然后仍然存在。基本上,您只是打印一个从未设置过值的变量的值。
尝试更改:
int i;
为:
int i = 42;
看看会发生什么。