递归返回1语句

时间:2015-05-22 07:50:33

标签: c++

#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;。

2 个答案:

答案 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的大小(很可能您没有这样做) ),然后上面会有未定义的行为,可能是你崩溃的原因。