请教一个二进制文件读写的问题
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
ofstream fout("wel.dat",ios::out|ios::binary|ios::ate); //二进制打开一个文件
int c; //拟在文件中以二进制形式输入数字
while(cin>>c)
{
fout.write((char *)(&c),sizeof(c));
}
fout.close();
ifstream fin("wel.dat",ios::in|ios::binary);
int d=0;
while(!fin.eof())
{
fin.read((char *)(&d),sizeof(d));
cout<<d<<endl;
}
fin.close();
}
现在的问题是编译运行时,输入 1 2 3 4 ctrl+Z 写入文件
读取显示时 1 2 3 4 4
这是为啥啊?
先谢谢大家
[解决办法]
请问ctrl+Z怎么用char表示呢?
[解决办法]
eof()返回true时是读到文件结束符0xFF,而文件结束符 是最后一个字符的下一个字符。
用下面的语句判断,应该可以解决
while (fin.peek() != EOF)