从末尾读取二进制文件
Reading binary file from the end
考虑我的代码:
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
写入文件的成本很高,因此文件流会等到它们被迫实际提交对文件的写入。除非你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);
我还建议添加一些检查以确保文件成功打开,并添加其他检查以确保读取和写入成功。
相关文章:
- 如何在 c++ 中将二进制文件读取为字符串
- 从二进制文件读取到数组:前面的任意数字
- 提升二进制文件读取错误不支持的版本
- 无法将二进制文件读取到 std::vector<std::byte> 中C++
- 提升序列化在从二进制文件读取时引发异常
- 从二进制文件 C++ 读取的字符串数组写入
- 将二进制文件读取到 std::vector<bool>
- 将fortran生成的二进制文件读取到C++中的带符号整数数组中
- 将从二进制文件读取的字符串转换为整数
- 从/到C 的二进制文件读取和写作整数
- 通过将结构信息从二进制文件读取到数组中,然后返回到文件C
- 将 int 的二进制文件读取到字符串 c++
- 将结构从二进制文件读取到链表,导致无限循环
- 将二进制文件读取到向量元素的地址中
- c++从二进制文件读取/写入类
- Python:将二进制文件读取到一个结构中,然后拆包
- 从二进制文件读取/写入十六进制字节
- 简单的 C++ 二进制文件读取
- 从二进制文件 c++ 读取 16 位整数
- 如何优化c++二进制文件读取