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

Как изменить один байт в бинарном файле? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ почти судоку) http://www.cyberforum.ru/cpp-beginners/thread220405.html
Уже создавала эту тему, но никто не ответил.Может не увидели или не успели.. .Если кто может помочь прошу помогите решить задачу на СИ суть задачи В каждую из шестнадцати клеток квадрата 4х4...
C++ Найти максимальный элемент среди отрицательных Здравствуйте! Будьте добры, помогите разобраться с этим: нужно написать программу, (используя массивы), которая будет искать максимальный елемент среди отрицательных и минимальный среди тех, что ... http://www.cyberforum.ru/cpp-beginners/thread220399.html
C++ Создание нового класса
Доброго времени суток!! Задание: 1. Определить пользовательский класс "компьютер". 2. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования. 3. Определить в...
C++ Создание нового класса
Доброго времени суток!! Задание: 1. Определить пользовательский класс "компьютер". 2. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования. 3. Определить в...
C++ Записать один файл в второй. http://www.cyberforum.ru/cpp-beginners/thread220377.html
Когда пытаюсь считать данные из файла оно мне выдает ошибку "access violation", вот код: //--------------------------------------------------------------------------- #pragma hdrstop #include...
C++ Даны натуральное число n, целые числа a1,a2,...,an Даны натуральное число n, целые числа a1,a2,...,an.Получить сумму положительных и число отрицательных членов последовательности a1,...,an подробнее

Показать сообщение отдельно
byte255
1 / 1 / 0
Регистрация: 26.12.2010
Сообщений: 8

Как изменить один байт в бинарном файле? - C++

26.12.2010, 00:56. Просмотров 2458. Ответов 3
Метки (Все метки)

Здравствуйте.
Второй день бьюсь над вопросом, просмотрел много примеров, но не понимаю, помогите.
Мне нужно изменить один байт в бинарном файле. Для этого использую следующий код.
Например, есть размером 1 гигабайт, мне нужно изменить десятый байт, записать в него 0x0A.
Для этого использую следующий код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void BinFile::writeByte(long pos, char byte)
{
    ofstream bin(this->filename, ios_base::binary);
    bin.seekp(pos,ios_base::beg);
    bin.put(byte);
    bin.close();
}
 
int main()
{
   int main ()
  {
     BinFile f("file.bin");
     f.writeByte(10, 10);
  }
}
В итоге, десятый байт дейтвительно становится равен 0x0A, но остальные становятся равны 0х00.
Может быть так, и должно быть?
Вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
using namespace std;
 
int main()
{
    FILE *fw;
    fw = fopen("pack.pck", "wb");
    char ch = 'x';
    fseek(fw, 0, SEEK_SET);
    fwrite(&ch, sizeof(char), 1, fw);
    fclose(fw);
    return 0;
}
приводит к тому же результату - первый (нулевой) байт 0х78, остальные - 0.
Подскажите, в чем дело может быть? Сон потерял =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru