Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 153
Завершенные тесты: 1
#1

Объединение двух бинарных файлов - C++

17.04.2013, 21:30. Просмотров 1428. Ответов 4
Метки нет (Все метки)

Как сделать программу которая считывает числа (упорядоченные по возрастанию) из двух бинарных файлов f и g, и сливает их в один упорядоченный файл ff (тоже бинарный)?
пробовал сделать, проблема в чтении из бин. файла - неизвестно сколько будет чисел в каждом из файлов, а если писать while(!feof(file)) то вылазят какие-то ошибки непонятные, и тем более непонятно как сливать числа в один файл - записать в массивы нельзя, т.к. неизвестно сколько будет чисел в каждом из файлов.
помогите пожалуйста разобраться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 21:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объединение двух бинарных файлов (C++):

Записать данные двух бинарных файлов в один - C++
Здравствуйте, столкнулся с проблемой. Нужно записать значения двух бинарных файлов в один, но при этом записанные значения не должны...

Объединение 2-х бинарных деревьев в одно - C++
Необходима функция объединения 2-х бинарных сбалансированных деревьев в одно.

Чтение бинарных файлов - C++
посчитать количество байт между первым 0A и FF?

Чтение бинарных файлов - C++
Здравствуйте уважаемые эксперты,хотелось бы узнать как можно прочитать шестнадцатиричные значения из файла,длиной 1б,в блок размером...

Чтение бинарных файлов - C++
Как прочитать бинарный файл начиная с пятого байта до конца? и как потом это прочитанное записать в другой файл?

О кодировке бинарных файлов - C++
Здравствуйте;Тут такая проблема:Как заполнять бинарные файлы? Просто я если создаю обычный файл и пихаю туда обычные числа то он...

4
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
17.04.2013, 22:07 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <fstream>
 
 
template< typename To, typename From >
inline To ptr_cast( From ptr ) {
   return static_cast< To >( static_cast< void * >( ptr ));
}
 
int main() {
   std::ifstream inFirst( "1.bin", std::ios::in | std::ios::binary );
   std::ifstream inSecond( "2.bin", std::ios::in | std::ios::binary );
   std::ofstream outThird( "3.bin", std::ios::out | std::ios::binary );
   
   int integer1;
   int integer2;
   
   if (!( inFirst && inSecond && outThird ))
      return -1;
 
   inFirst.read( ptr_cast< char * >( &integer1 ), sizeof( integer1 ));
   inSecond.read( ptr_cast< char * >( &integer2 ), sizeof( integer2 ));
   
   while ( inFirst && inSecond ) {
      if ( integer1 < integer2 ) {
         outThird.write( ptr_cast< const char * >( &integer1 ), sizeof( integer1 ));
         inFirst.read( ptr_cast< char * >( &integer1 ), sizeof( integer1 ));
      } else {
         outThird.write( ptr_cast< const char * >( &integer2 ), sizeof( integer2 ));
         inSecond.read( ptr_cast< char * >( &integer2 ), sizeof( integer2 ));
      }
   }
   
   while ( inFirst ) {
      outThird.write( ptr_cast< const char * >( &integer1 ), sizeof( integer1 ));
      inFirst.read( ptr_cast< char * >( &integer1 ), sizeof( integer1 ));
   }
   
   while ( inSecond ) {
      outThird.write( ptr_cast< const char * >( &integer2 ), sizeof( integer2 ));
      inSecond.read( ptr_cast< char * >( &integer2 ), sizeof( integer2 ));
   }
   
   return 0;
}
0
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 153
Завершенные тесты: 1
17.04.2013, 22:51  [ТС] #3
Toshkarik, спасибо большое. только желательно чтоб было без использования всего что содержит "< >" template, ptr_cast и т.д. такие дужки... просто мы такое только-только начинаем учить и то очень минимально, если такую программу напишу меня не поймут..
0
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
18.04.2013, 06:48 #4
gorus95, замените просто везде ptr_cast<>(..) на то что внутри функции или на такого вида конструкцию:
C++
1
inFirst.read( reinterpret_cast< char * >( &integer1 ), sizeof( integer1 ));
после чего просто удалите шаблон.
А без приведения типа здесь никак, или reinterpret_cast, или два static_cast ( что все же лучше будет ).
0
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 153
Завершенные тесты: 1
18.04.2013, 12:24  [ТС] #5
Toshkarik, понятно, спасибо.
0
18.04.2013, 12:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2013, 12:24
Привет! Вот еще темы с ответами:

Запись бинарных файлов - C++
открываю в hex-редакторе бинарный файл, там написано 41 54 26 54 вопрос как мне это записать в файл, чтобы этот файл можно было...

Счёт последовательностей бинарных файлов - C++
Написал программу, которая конвертирует текстовый файл в бинарный, считывает из него данные для структуры. И вроде всё работает. Но теперь...

Чтение бинарных файлов по байтам - C++
Есть бинарный файл, который состоит из большого числа разновидной информации записанной в hex-е. Как можно считывать этот файл и...

Поиск максимального числа z в двух бинарных последовательностях - C++
Задание: Пусть x и y - две бинарных последовательности (т.е. элементы последовательностей - нули и единицы); x и y можно рассматривать как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru