|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
Разработать программу управление двоичными файлами с записями фиксированной длины(структура и работа с ней)10.11.2022, 03:17. Показов 4163. Ответов 62
Приветствую всех. Очередное задание, над которым я буду биться не покладая рук несколько дней.
![]() Как обычно от всех читающих рад буду получить любое пояснение / видение / список литературы и полезные ссылки / код / алгоритм к моему заданию, а так же пожелания удачи и терпения ![]() Для начала прикладываю требования из методички, которым постараюсь следовать. Общие требования: файл состоит из записей определенной структуры, согласно варианту. Записи имеют ключ, уникальный в пределах файла. Требования к подготовке и выполнению задания 1. Разработать структуру записи двоичного файла согласно варианту задания. 2. Подготовить тестовые данные в текстовом файле с кодировкой ASCII, в соответствии со структурой записи варианта. При открытии файла выполнить контроль его существования и открытия. Примечание. Реализация операций по чтению данных из файла будет проще, если значение для каждого поля записи размещать на отдельной строке текстового редактора. 3. Имя файла вводит пользователь. 4. При открытии файла обеспечить контроль существования и открытия файла. 5. При применении механизма прямого доступа к записи файла выполнить контроль присутствия записи с заданным номером в файле. 6. Разработать функции для выполнения операций:
8. Разработать приложение, демонстрирующее выполнение всех операций, подключив к нему модуль с функциями. 9. Выполнить тестирование приложения, продемонстрировав выполнение всех операций. То, что указано в задании 6 важно. Я обязательно напишу каждую функцию, но пока постараюсь сосредоточиться на основном задании и начну с него. Дабы не усложнять жизнь и кидать сюда код, я всё буду делать в одном файле, потом разнесу и через switch case сделаю минюшку, чтобы удобно всё это тестить. Само же задание(основная функция) звучит так: Структура записи: Учет техосмотра автомобилей. Структура записи об автомобиле: Номер (код региона, цифровой код, буквенный код), Модель, Цвет, Сведения о владельце (Фамилия, Имя, Адрес), дата последнего техосмотра. Доп. Операция: 1. Заменить дату техосмотра у автомобиля с заданным номером на новую дату. 2. Сформировать список авто одной модели, прошедших техосмотр в заданную дату. P.S Пока не могу задать какого-то конкретного вопроса, а просить чтобы растолковали что там вообще в условии написано как-то неловко (хотя я был бы рад). В общем буду писать конкретные вопросы как только смогу их составить. Пока же рад любой информации по теме. Главное — не сдать, а разобраться. Сейчас же постараюсь дойти хотя бы до какой-то части этого процесса. Начну, видимо со структуры и работы с ней. Надеюсь на твоё понимание, дорогой читатель)))
0
|
|
| 10.11.2022, 03:17 | |
|
Ответы с готовыми решениями:
62
Работа с двоичными файлами: слова заданной длины Создать текстовый файл с записями фиксированной длины. |
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 13.11.2022, 15:04 [ТС] | |
|
А вот и первый вопрос. Какими типами данных сделать поля в структуре? Конкретно сведения о владельце (Фамилия, Имя, Адрес) и Номер (код региона, цифровой код, буквенный код). Я бы скорее всего предпочел просто все сделать стринговым и писать строку, но как тогда потом с этим всем работать?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 13.11.2022, 15:18 | |||
|
По крайней мере задание предусматривает совсем другое решение. Добавлено через 2 минуты Думаю все поля структуры должны быть фиксированной длинны и "простыми" типами. Строки - массивы символов максимальной необходимой длинны + нуль-терминатор.
0
|
|||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||
| 13.11.2022, 15:30 [ТС] | ||
|
А что значат эти "простые" типы? Я помню, что там был прикол какой-то с типом char* который возвращал вроде как строку
Добавлено через 4 минуты
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||
| 13.11.2022, 15:40 | ||||
|
Размер типа равен, размеру всех данных его полей, именно данных. Это должно быть справедливо и для всех полей, и их полей и ... (выравнивание пока не будем обсуждать) Пример : int - простой тип int * - тоже простой, но обычно, значение указателя не используются как постоянные данные и не несет в себе полезные для сохранения данные. По ним обычно хранятся другие данные, размер которых мы не всегда можем знать заранее. И сам указатель не хранит эти данные. То есть, указатель не хранит в себе полезные для нас данные, а лишь ссылается на них. Так что мы его логически относим к "сложным типам". Такими типами могут выступать и типы на первый взгляд простые. Например тип с числовыми временными идентификаторами записей базы данных. Как то так ... Добавлено через 1 минуту
0
|
||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|||||||
| 13.11.2022, 15:55 [ТС] | |||||||
|
Я попробовал. Если правильно понял, то как-то так
0
|
|||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||||||||||||
| 13.11.2022, 16:05 | |||||||||||||||||
![]() вместо
И еще, я бы вынес константы рамзеров для каждого поля отдельными, так как длины для них ожидаются различными, и для всех выделять по 256 байтов, слишком расточительно. Добавлено через 6 минут Может станет понятней если я приведу пример чтения / записи такой структуры в файл ?
0
|
|||||||||||||||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 13.11.2022, 16:06 [ТС] | |
|
Аа, так вот оно как. Сейчас переделаю
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 13.11.2022, 16:15 | |
|
Где то я такое задание уже видел ...
0
|
|
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||
| 13.11.2022, 16:27 [ТС] | ||
|
Видели такое же? Тогда было бы классно ссылочку заиметь. Вообще я такое первый раз задаю
Добавлено через 43 секунды
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 13.11.2022, 16:30 | ||
|
Управление двоичными файлами с записями фиксированной длины.Разбиаение записи на команды
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 13.11.2022, 16:31 [ТС] | |
|
А. Не совсем. Там была реализация хеширования по больше части
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 13.11.2022, 16:34 | ||
|
Приводим его к указателю на char - (char*). read и write, пишут читают символы (байты), не форматированный ввод/вывод. Добавлено через 1 минуту Вторым параметром указываем сколько байт нужно почитать/записать. Полный размер структуры Car (весь объект структуру)
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||||||||||||||||||||||
| 13.11.2022, 17:40 [ТС] | ||||||||||||||||||||||
|
Такс. Стало понятнее. Попробую на базе этого сделать функцию с заменой даты
Добавлено через 22 минуты Сделал, но прога сильно ругается на
Еще достаточно странное в задании представление номера. Я погуглил. Обычно они выглядят вот так "A000AA" и дальше 97/rus. Я же постарался сделать как сказано в условии, то есть код региона, потом цифровой и потом фуквенный. Ничего лучше, чем разделить их "-" я не придумал Добавлено через 23 минуты
Ещё немного боли и рефактроринга. Получилось на этот раз так:
0
|
||||||||||||||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 13.11.2022, 17:46 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|||||||
| 13.11.2022, 17:53 [ТС] | |||||||
0
|
|||||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|||||||
| 13.11.2022, 17:53 [ТС] | |||||||
0
|
|||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 13.11.2022, 18:19 | ||
|
daniil_novel,
Чему вас учили до этого момента ? Вы не проходили указатели, работы со строками, массивы ? Добавлено через 34 секунды сравнить две Си строки - strcmp Добавлено через 1 минуту Точнее их значения, адреса.
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||
| 13.11.2022, 18:29 [ТС] | ||
|
Добавлено через 1 минуту Большинство функций, которые вы мне говорите в решении, я вижу впервые. Каждую отдельно гуглю и сразу стараюсь применять
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 13.11.2022, 18:31 | |
|
0
|
|
| 13.11.2022, 18:31 | |
|
Помогаю со студенческими работами здесь
20
Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины Работа с двоичными файлами Работа с двоичными файлами Работа с двоичными файлами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|