Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2019, 22:04   #1
VLADOS2001
Пользователь
 
Регистрация: 19.09.2019
Сообщений: 23
По умолчанию Задача c файлом

В настоящее бинарный файл, содержащий целые числа, дописать на его начало все элементы данного файла в обратном порядке.

Код:
#include <fstream>
#include <algorithm>
using namespace std;

int MAX_SIZE = 100000000;
char *buf=new char[MAX_SIZE + 1];


int main(int argv,char*argc[])
{
	ifstream fin("1.txt", ios::in | ios::binary|ios::app);
	fin.read(buf, MAX_SIZE);
	int num_read = fin.gcount();
	fin.close();

	reverse(buf, buf + num_read);

	ofstream fout("1.txt", ios::out | ios::binary);
	fout.write(buf, num_read);
	fout.write(buf, MAX_SIZE);
	fout.close();

	system("pause");
	return 0;
}
VLADOS2001 вне форума Ответить с цитированием
Старый 20.10.2019, 22:22   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

VLADOS2001, Вы хоть объясните что сия тема значит.
Демонстрируете достижения или помощь в коде нужна, не понятно
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 20.10.2019, 22:35   #3
VLADOS2001
Пользователь
 
Регистрация: 19.09.2019
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
VLADOS2001, Вы хоть объясните что сия тема значит.
Демонстрируете достижения или помощь в коде нужна, не понятно
Мой код делает:
если в файле:1 2 3 4 будет 1 2 3 4 4 3 2 1
А надо : 4 3 2 1 1 2 3 4
Код:
#include <fstream>
#include <algorithm>
using namespace std;

 int MAX_SIZE = 10000000000;
char *buf=new char[MAX_SIZE + 1];

int main()
{
	ifstream fin("1.txt", ios::in | ios::binary);
	fin.read(buf, MAX_SIZE);
	int num_read = fin.gcount();
	fin.seekg(0);
	fin.close();

	reverse(buf, buf + num_read);

	ofstream fout("1.txt", ios::out | ios::binary|ios::app);
	fout.write(buf, num_read);
	fout.close();
}
куда написать seekg() or seekp()????

Последний раз редактировалось VLADOS2001; 20.10.2019 в 22:45.
VLADOS2001 вне форума Ответить с цитированием
Старый 20.10.2019, 23:07   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,378
По умолчанию

Вы пишите в тот же файл, в котором уже было 1 2 3 4
1. Прочитайте из исходного фала данные
2. Сформируйте новые в соответствии с заданием
3. Откройте новый файл и впишите ваш результат.
4. Прочитайте из исходного файла данные и добавьте их в конец.

Вариантов несколько.
Можно исходный файл открыть на чтение и прочитать его содержимое в буфер.
Файл закрыть и вновь открыть на запись.
Записать в новый (поскольку старый файл будет удалён) полученный вами результат, затем дописать строки из буфера.

PS: Непосредственно в существующий текстовый файл дописать в голову данные иначе не получится.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 21.10.2019, 09:27   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так в задании файл не текстовый, а бинарный. обычно это означает, что файл представляет собой файл состоит из двоичного представления чисел (в данном случае - целых чисел):
https://web-answers.ru/c/binaryfiles...yj-fajl-v.html
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с текстовыим файлом kinash96 Помощь студентам 0 12.11.2013 23:11
задача с текстовым файлом в паскале SeregaVili Помощь студентам 2 08.01.2013 14:19
задача на структуру(struct)/задача на работу с файлом SevenArth Помощь студентам 0 26.04.2012 19:06
Задача с текстовым файлом Viwwna Паскаль, Turbo Pascal, PascalABC.NET 2 24.11.2011 20:09
Задача на работу с текстовым файлом. Константинн Помощь студентам 7 30.03.2011 18:55