Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 1

Повреждается бинарный файл при попытке его записи в другой файл

22.09.2019, 17:52. Показов 1617. Ответов 2

Студворк — интернет-сервис помощи студентам
Делаю автоматизированную сборку. Для этого нужно соединить три файла в один новый. Но почему-то каждый раз в exe-файле появляется лишний байт.
Почему так может происходить и как бороться?

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
 
    system("cd C:\\MinGW\\bin && nasm -f bin vesa.asm -o boot.bin");
 
    system("cd C:\\MinGW\\bin && gcc -nostdlib -masm=intel vesa.c");
 
    system("cd C:\\MinGW\\bin && objcopy a.exe -O binary");
    
    ifstream f1("C:\\MinGW\\bin\\boot.bin", ios_base::binary);
    ifstream f2("C:\\MinGW\\bin\\a.exe", ios_base::binary);
    ifstream f3("C:\\MinGW\\bin\\5.bin", ios_base::binary);
 
    if (!f1 || !f2 || !f3)
    {
        cout << "File not found.\n" << endl;
        system("pause");
        return 0;
    }
 
    ofstream f("C:\\qemu\\disc.img", ios_base::trunc);
    f << f1.rdbuf();
    f.seekp(510, ios_base::beg);
    f << f3.rdbuf();
    f << f2.rdbuf();
 
    f1.close();
    f2.close();
    f3.close();
    f.close();
 
    system("cd C:\\qemu && qemu-system-i386 disc.img");
    system("pause");
    return 0;
}
На скрине видно, что в финальном варианте появилась лишняя информация.
Бьюсь уже неделю, понять не могу, что к чему.
Миниатюры
Повреждается бинарный файл при попытке его записи в другой файл  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2019, 17:52
Ответы с готовыми решениями:

Сконвертировать текстовый файл в бинарный, переписать только положительные числа в другой бинарный файл
Бинарные файлы!! Помогите пожалуйста. Дано бинарный файл ( данные сначала в текстовом, конвертирую в бинарный). Без использования другого...

Ошибка при записи в бинарный файл
Задание - записать в бинарный файл последовательность из N байт вида &quot;00001111 11110000 00001111 ...&quot;. Почему-то 11110000...

Краш программы при попытке записи в файл
Такой вот небольшой кусок программы, который должен просто записывать вводимые структуры в файл. После отработки первого цикла крашится и...

2
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,099
22.09.2019, 18:24
Символ 0D (возврат коретки) появился перед символом 0A (перевод строки). Похоже на текстовый режим работы потока, а не на бинарный. Возможно, что причина в отсутствии бинарного режима у выходного файла.
1
Just Do It!
 Аватар для XLAT
4202 / 2658 / 654
Регистрация: 23.09.2014
Сообщений: 8,965
Записей в блоге: 3
22.09.2019, 18:35
Лучший ответ Сообщение было отмечено Lyolya_Space как решение

Решение

Цитата Сообщение от Ygg Посмотреть сообщение
Символ 0D (возврат коретки) появился перед символом 0A (перевод строки)
испытайте

C++
26
ofstream f("C:\\qemu\\disc.img", ios_base::trunc | ios_base::binary );
файлы у вас бинарные же, а не текстовые.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2019, 18:35
Помогаю со студенческими работами здесь

Ошибка при записи или чтении в бинарный файл
Есть такие вот типы данных: struct Nomer { int n, tsena1Deni; string klass; int kMest, kZaselenii; bool svoboden; Nomer...

Баг при использовании класса string при записи в бинарный файл
При записи в бинарный файл пользовательского класса, всё отлично отрабатывает, но, если в классе использовался класс string, то в конце...

Добавление записи в бинарный файл
Есть заполненный вектор структур. Структура вида: struct struc { string a; int x; map&lt;int, int&gt;m; }; и вот...

Функция записи массива в бинарный файл
Здравствуйте, если кто найдет ошибку - поправьте, желательно кодом, если лень - то скажите в какой строке ошибка и самое главное - в чем. ...

Дан тестовый файл. Вывести его содержимое в другой файл, заменив каждое вхождение пробела на символ нижнего подчеркивания.
Дан тестовый файл. Вывести его содержимое в другой файл, заменив каждое вхождение пробела на символ нижнего подчеркивания. Вывести оба...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru