Ал
Алексей

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()

Ол
Олеся

"Есть задание : В начало двоичного файла целого типа дописать нечетные элементы этого файла. "
и
"Теперь надо посчитать количество чисел во втором файле, как по заданию, и вывести на экран. "
то ли я ничего не понимаю, то ли лыжи не едут? Где сказано в задании "подсчитать"? Где в задании упоминается "второй файл"?

tellp() - нет такой функции, есть tellg()

"Но сказали только не через n и size"..."Надо написать как то через"
Так озвучьте полностью и точно задание! Или у Вас в задании так и сказано: "Написать как-то так.. "?

Похожие вопросы
Как посчитать количество файлов в папке?
[C++]: подсчет количества строк в txt-файле
Как в С++ посчитать количество цифр после запятой???
Задачка по C++. Нужно подсчитать в одномерном массиве количество нулевых элементов
Как посчитать количество символов в файле?
Программа с++. Посчитать количество слов в файле. Посчитать количество слов в файле.
1. Задача: Определить количество «особых» элементов k массива C
Как посчитать количество элементов цикле foreach PHP
посчитать количество нулей в такой программе:
Перевести число из двоичной системы счисления в двоичную. Язык C++. Двоичное число может иметь до 50000 цифр.