考虑我的代码:
int main()
{
ofstream izlazni_tok("Brojevi.dat", ios::binary);
cout<<"Unesi 10 brojeva: ";
double broj;
for(int i=0; i<10; i++)
{
cin>>broj;
izlazni_tok.write((char*)&broj, sizeof(broj));
}
cout<<"Obrnuti redoslijed: ";
ifstream ulazni_tok("Brojevi.dat", ios::binary);
ulazni_tok.seekg(0, ios::end);
int duzina_datoteke(ulazni_tok.tellg());
int broj_elemenata(duzina_datoteke/sizeof(double));
for(int i=broj_elemenata-1; i>=0; i--)
{
ulazni_tok.seekg(i*sizeof(double));
ulazni_tok.read((char*)&broj, sizeof(broj));
cout<<broj<<endl;
}
return 0;
}
我是计算机编程的新手,我被赋予了编写程序来编写二进制文件的任务,其中你将10个数字放入文件中,然后从文件的后面读取它们并在程序时显示它们运行。由于一些奇怪的原因,我的程序没有显示任何数字,我不知道为什么。欢迎任何帮助。 :d
答案 0 :(得分:1)
写入文件非常昂贵,因此文件流会等到它们被迫实际提交对文件的写入。除非你close
或flush
izlazni_tok
,否则你所写的内容很好,就是坐在内存中等待缓冲区填满的缓冲区中。
izlazni_tok.close(); // added to flush and close the output file
cout<<"Obrnuti redoslijed: ";
ifstream ulazni_tok("Brojevi.dat", ios::binary);
我还建议添加一些检查以确保文件成功打开以及其他检查以确保读取和写入成功。