#include<iostream>
#include<fstream>
using namespace std;
void main()
{
int num;
ofstream file("text.txt", ios::binary);
for(int i=1;i<=5;i++){
cout<<"Enter an integer";
cin>>num;
file.write((char*)num, sizeof(num));
}
out.close();
system("pause");
}
我收到以下消息&#34; 0x000000000处的未处理异常:操作成功完成&#34;。
答案 0 :(得分:2)
在此声明中,您将获得号码,将其用作内存中的地址,这很可能无效。
file.write((char*)num, sizeof(num));
如果要以二进制表示形式编写num
,则应首先获取其地址:
file.write(reinterpret_cast<char*>(&num), sizeof(num));
注意&符号,它是获取地址的一元运算符。我也使用了reinterpret_cast
这种情况下的C ++类型转换。 C风格转换可能会隐藏错误(但reinterpret_cast
也适用于int
- &gt; *
转化。)
P.S。 void main()
是一个无效的main原型。它应该至少返回int
。
答案 1 :(得分:0)
cin>>num;
file.write((char*)num, sizeof(num));
如果您没有输入一个代表有效分配内存地址的数字,至少是int
的大小(很可能您没有这样做) ),然后上面会有未定义的行为,可能是你崩溃的原因。