0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 26
1

Работа с бинарным файлом

27.03.2017, 19:14. Показов 1050. Ответов 8
Метки нет (Все метки)

подскажите пожалуйста как перезаписать определенную область в бинарном файле. именно конкретный участок
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2017, 19:14
Ответы с готовыми решениями:

Работа с бинарным файлом
Ребята, подскажите, правильно ли делаю? Вводятся три числа и нужно поменять в бинарном файле...

Работа с бинарным файлом - на вывод поступает мусор
Есть структуры вида struct Note { char date; int temp; struct Note *next; }; struct...

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

Работа с бинарным файлом
Здравствуйте. Подскажите, хотя бы в общих чертах, как написать скрипт который бы работал с...

8
20 / 20 / 8
Регистрация: 15.10.2015
Сообщений: 83
27.03.2017, 22:29 2
Открываешь чтение в бинарке, берёшь оттуда всё и записываешь в этот же файл, только изменяешь некоторый кусок, всё просто
0
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 26
27.03.2017, 22:39  [ТС] 3
а если данных в файле слишком много то так как ты говоришь будет не очень хорошо
0
1120 / 801 / 248
Регистрация: 30.06.2015
Сообщений: 4,202
Записей в блоге: 44
28.03.2017, 11:31 4
Цитата Сообщение от NezamovMark Посмотреть сообщение
именно конкретный участок
Его можно перезаписать только если его размер будет точно соответствовать размеру перезаписываемой информации. Нужно использовать функции: fseek, ftell, fscanf.
0
20 / 20 / 8
Регистрация: 15.10.2015
Сообщений: 83
28.03.2017, 11:46 5
Ну сотри, берёшь и по кускам забираешь данные и вставляешь в выходной файл.... Если ты взял кусок, который тебе нужен, заменяешь его
1
1270 / 1027 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.03.2017, 13:23 6
Цитата Сообщение от NezamovMark Посмотреть сообщение
подскажите пожалуйста как перезаписать определенную область в бинарном файле
Легко
C
1
2
3
FILE *f = fopen(fname, "r+b");
fseek(f, 5, SEEK_SET); // устанавливаем смещение от начала файла
fputc(0xAA, f);
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
28.03.2017, 13:27 7
Цитата Сообщение от likehood Посмотреть сообщение
Легко
Но ведь это дописать, а не перезаписать...
0
1270 / 1027 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.03.2017, 13:53 8
Лучший ответ Сообщение было отмечено NezamovMark как решение

Решение

Цитата Сообщение от shvyrevvg Посмотреть сообщение
Но ведь это дописать, а не перезаписать
Именно перезаписать (благодаря режиму "r+b").

Добавлено через 20 минут
Цитата Сообщение от likehood Посмотреть сообщение
Именно перезаписать
Приведу программу, которая это демонстрирует.
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
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>
 
FILE *open_file(const char *name, const char *mode)
{
    FILE *f = fopen(name, mode);
    if (!f) {
        printf("Cannot open file '%s'\n", name);
        exit(1);
    }
}
 
void print_file(const char *name)
{
    FILE *f = open_file(name, "rb");
    int c;
    while ( (c = fgetc(f)) != EOF )
    {
        printf("%2X ", c);
    }
    puts("");
    fclose(f);
}
 
void fill(const char *name)
{
    FILE *f = open_file(name, "wb");
    for (int i=0; i<16; i++)
        fputc(i, f);
    fclose(f);
}
 
void change(const char *name)
{
    FILE *f = open_file(name, "r+b");
    fseek(f, 3, SEEK_SET);
    const char s[] = { 0xDE, 0xAD, 0xBE, 0xEF};
    fwrite(s, 1, 2, f);
    fseek(f, 1, SEEK_CUR);
    fwrite(s+2, 1, 2, f);
    fclose(f);
}
 
int main()
{
    const char *name = "file.dat";
 
    fill(name);
    printf("Original: ");
    print_file(name);
 
    printf("Modified: ");
    change(name);
    print_file(name);
}
1
shvyrevvg
28.03.2017, 13:56     Работа с бинарным файлом
  #9

Не по теме:

Цитата Сообщение от likehood Посмотреть сообщение
Приведу программу, которая это демонстрирует.
Я уже проверил :)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2017, 13:56

Работа с бинарным файлом
Доброго времени суток всем. Помогите пожалуйста доделать задачу: Создать класс для работы с...

Работа с бинарным файлом
Добрый день, уважаемые форумчане. Требуется решить задачу с бинарным словарем, а именно. Файл...

Работа с бинарным файлом
почему программа не выводит 16-ричный дамп бинарного файла? int main () { streamoff lSize; ...

Работа с бинарным файлом
Здравствуйте, есть функция на delphi, которая записывает информацию в файл. procedure...

Работа с бинарным файлом
Можно ли из бинарного файла выписывать строки?

Работа с бинарным файлом
помогите, пожалуйста Дан бинарный файл, содержащий числа а1, b1, a2, b2... Каждая пара чисел a и b...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru