Вывести отрицательные числа из бинарного файла с++
Решил избавиться от динамических массивов, а то какой смысл от файлов в этой программе, если вывод происходит из массива, а не из файла, и столкнулся с проблемой. Программа должна выводить только отрицательные числа из введённых, но выводит только последнее, да и только если оно отрицательное, иначе ничего не выводит.
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int i, n, d;
cout << "Введите количество чисел - ";
cin >> n;
ofstream F("F.txt");
for (i = 0; i < n; i++)
{
cout << "Число №" << i+1 << ": ";
cin >> d;
F << d << '\t';
}
F.close();
ofstream Fbo("F.dat", ios::binary);
Fbo.write((char*)&d, sizeof(int));
Fbo.close();
ifstream Fbi("F.dat", ios::binary);
int db = 0;
while (Fbi.read((char*)&db, sizeof(int)))
{
if (db < 0)
cout << db << '\t';
}
Fbi.close();
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Вместо
ofstream F("F.txt");
for (i = 0; i < n; i++)
{
cout << "Число №" << i+1 << ": ";
cin >> d;
F << d << '\t';
}
F.close();
ofstream Fbo("F.dat", ios::binary);
Fbo.write((char*)&d, sizeof(int));
Fbo.close();
напишите
ofstream F("F.txt");
ofstream Fbo("F.dat", ios::binary);
for (i = 0; i < n; i++)
{
cout << "Число №" << i+1 << ": ";
cin >> d;
F << d << '\t';
Fbo.write((char*)&d, sizeof(int));
}
F.close();
Fbo.close();