Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542

Как заменить (вставить, удалить) часть байт в файле

01.02.2013, 00:04. Показов 3893. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я записываю данные в файл через
C++
1
fwrite(&air, size, 1, Fz);
соответственно у меня в файле несколько записей, как не трогая все записи изменить только какую-то одну, то есть заменить (вставить,удалить) часть байт размером size где-нибудь в середине файла, то есть переставить каретку и перезаписать несколько байт другой информацией или удалить часть байт и сдвинуть все на это расстояние, что бы при чтении все было по порядку или вставить в середину файла еще какую-нибудь запись, а все остальные сместить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2013, 00:04
Ответы с готовыми решениями:

Как заменить, перезаписать нужный мне байт в файле?
Здравия всем! В общем, дело такое, есть файл с 8 байтами, первый отвечает за тип, второй - за время жизни и после времени жизни есть...

Как в файле удалить n байт, начиная с заданной позиции
Вопрос: как в файле удалить n байт начиная с заданной позиции? (файловый ввод-вывод в стиле C++)

Как заменить часть текста в файле и записать изменения?
Как заменить часть текста в файле и записать изменения? $fp = file_get_contents("index.html"); $patterns = "/<!-- Текст...

5
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.02.2013, 01:19
можно использовать копирование в потоках (stream - copyto - position...), но это на мой взгляд муторно. Почему бы не обрабатывать данные в буфере? и потом записать. Или стринглист использовать (данные, судя по всему. - текст)?
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2013, 19:07  [ТС]
Данные это структура с несколькими текстовыми переменными, что такое стринглист?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.02.2013, 19:19
Цитата Сообщение от klynxe Посмотреть сообщение
что такое стринглист?
Стринглист - это списочная структура (последовательность строк), из нее можно сразу записывать (и считывать) в файл тексты. Вот если написать такое:__
C++
1
2
3
4
5
      TStringList *Li = new TStringList();
      Li->CommaText = "Ñòðîêà1\nÑòðîêà2\nÑòðîêà3\nÑòðîêà4";
      Edit1->Text = Li->Strings[2]; //  "Ñòðîêà3"
      Li->SaveToFile("Ìîé òåêñò.txt");
      delete Li;
то в эдит попадет третья по счету строка списка, а сам список запишется в файл.
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
01.02.2013, 20:16  [ТС]
У меня в целом примерно так: есть кнопка создать файл, добавить данные через fwrite(&air, size, 1, Fz); затем есть открыть файл, при открытии я вывожу данные, как записывал, в ListBox, затем есть кнопка редактировать, то есть при выделении какой-либо строки в Listbox, данные из нее распихиваться по эдитам (читаю и вывожу данные из файла, по номеру строки ListBox) далее при нажатии сохранить изменения

(начиная от сюда я не знаю как это сделать)

1)должна заменяться n-я строка в ListBox
2)должно заменяться содержимое файла в битах содержащих редактируемые данные, остальные я не хочу трогать, то есть только одну строку переписать соответственно size байт в файле начиная с какого-то.
Далее есть кнопка удалить, выбираю строку в ListBox
3)Удаляю из ListBox строку и все смещаю (можно сначала сделать пункт 2 и открыть заново файл)
4) Удаляю size бит из файла и все последующее смещается на это расстояние к началу

Вопрос как сделать 1,2,3,4 пункты?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
02.02.2013, 01:00
У меня есть пример с файлом, в котором сохраняются данные, но эти данные структурированы, - не совсем текст: вначале запись счетчика записей, затем сами записи. При чтении файла его содержимое поступает в массив по формату структуры. Запись аналогична; в файловый поток выводятся записи структуры. Можно добавить анализ: если номер записи сравнится с искомым, то в поток направляются данные с контролов, а не из структуры. Потом запись из массива возобновляется. (Это если обязательно хочется таким способом. Но если в записи только строки, то есть смысл загружать и сохранять список, а уж откорректировать перед сохранением отдельную строку списка - пустячное дело).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2013, 01:00
Помогаю со студенческими работами здесь

Найти в текстовом файле строку по заданному слову и заменить ей определённую часть строки в другом файле
Всех с Новым Годом! Наверное избитая тема, но все же... Задача такая: Существует два файла: log.txt и run.bat. Необходимо в log.txt...

А можно сделать так (разбить как нибудь или запятые вставить ), чтобы было не 8998989 байт, а 8,998,989 байт ?
Кстати, вот еще вопрос... В переменной (например, filesize) хранится размер файла. При выводе на печать <%=filesize%> выводится...

Удалить часть картинки и вставить туда фон
Подскажите новичку. Редактирую в corel изображение (план водопровода). надо маленькую область удалить и чтобы на её месте остался фон этого...

Как взять часть ссылки средствами JS и вставить эту часть в другую ссылку?
Приветствую! Опишу очень коротко проблему: Открывается страница с таким адресом: ...

Удалить часть строки в файле до определенной фразы
Всем привет. Возможно уже где то было, но не нашел. Есть файл содержащий 179 0 15392768 mmcblk0 179 1 3072...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
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
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами 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/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru