чтение запись — запись данных в файл в фиксированном количестве, что приводит к повторной загрузке данных в файл Переполнение стека

У меня есть эта программа, и я хочу прочитать данные небольшими частями, например, по 2 КБ, а затем записать их в файл, но когда я пытаюсь сделать это, я читаю и записываю мой файл четыре раза. вот мой код:

#include<fstream>
#include<iostream>

using namespace std;

ifstream::pos_type size; // use if file is larger than 2 gb

int main()
{
char *memblock=0;
ifstream in("file.txt", ios::in | ios::binary | ios::ate);
ofstream in1("file1.txt", ios::out | ios::binary | ios::ate);
size = in.tellg();
cout << "Size of file "<< size << endl;
float sz= size/2048.0;
int sizechck = ceil(sz);
cout<< "size is "<<sizechck;
if(in.is_open())
{
memblock = new char [2048];
for (j=0;j<=sizechck;j++)
{
in.seekg (j*2048,ios::beg);
in.read (memblock, 2048);
in1.write(memblock,2048);
}

}
system("pause");
return 0;
}

0

Решение

Вы читаете и пишете 4096 байт, но вы ищете 2048 (кстати, вы пишете в нераспределенную память).

Вам не нужно искать вообще. Чтение и запись перемещают указатель файла соответственно.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]