从末尾读取二进制文件

Reading binary file from the end

本文关键字:二进制文件 读取      更新时间:2023-10-16

考虑我的代码:

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

写入文件的成本很高,因此文件流会等到它们被迫实际提交对文件的写入。除非你closeflushizlazni_tok,否则你写的很可能是坐在内存中的缓冲区中等待缓冲区填满。

izlazni_tok.close(); // added to flush and close the output file
cout<<"Obrnuti redoslijed: ";
ifstream ulazni_tok("Brojevi.dat", ios::binary);

我还建议添加一些检查以确保文件成功打开,并添加其他检查以确保读取和写入成功。