C++. Двоичные файлы. Посчитать количество элементов в файле.
Есть задание : В начало двоичного файла целого типа дописать нечетные элементы этого файла.
Есть код проги :
#include
#include
#include
#include
using namespace std;
class bin_stream
: public fstream
{
public:
bin_stream(const char *fn)
: fstream(fn, ios::out | ios::in | ios::binary | ios::trunc)
{
}
void doneOurDate(const void*, int, int);
bin_stream &operator<<(int d)
{
doneOurDate(&d, sizeof(d),0);
return *this;
}
bin_stream &operator>>(int &d)
{
doneOurDate(&d, sizeof(d),1);
return *this;
}
};
int main()
{
setlocale(LC_ALL, "Russian");
srand(time(0));
bin_stream bin("bin.dat");
if (!bin)
{
cout << "Файл bin.dat не найден" << endl;
system("pause");
return 1;
}
const int n = 8;
for (int i = 0; i < n; i++)
bin << rand()™ + 1;
int size = 0;
bin.seekp(0);
cout << "Входной файл: " << endl;
while (!bin.eof())
{
int tmp;
bin >> tmp;
if (!bin.eof())
{
size++;
cout << tmp << " ";
}
}
cout << endl;
int *arr = new int [256];
bin.clear();
bin.seekp(0);
int index = 0;
while (!bin.eof())
{
int tmp;
bin >> tmp;
arr[index++] = tmp;
}
bin.clear();
bin.seekp(0);
for (int i = 0; i < size; i++)
if (arr % 2 == 1)
bin << arr;
for (int i = 0; i < size; i++)
bin << arr;
cout << "Полученный файл: " << endl;
bin.clear();
bin.seekp(0);
while (!bin.eof())
{
int tmp;
bin >> tmp;
if (!bin.eof())
cout << tmp << " ";
}
cout << endl;
bin.close();
delete [] arr;
system("pause");
return 0;
}
void bin_stream::doneOurDate(const void *Ptr, int len, int sign)
{
if (!Ptr) return;
if (len <= 0) return;
if (sign==0) write((char*)Ptr, len);
else read((char*)Ptr, len);
}
Теперь надо посчитать количество чисел во втором файле, как по заданию, и вывести на экран. Но сказали только не через n и size!!!
Помогите пожалуйста, кто знает! !
Надо написать как то через tellp()