|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
Разработать программу управление двоичными файлами с записями фиксированной длины(структура и работа с ней)10.11.2022, 03:17. Показов 4525. Ответов 62
Приветствую всех. Очередное задание, над которым я буду биться не покладая рук несколько дней.
![]() Как обычно от всех читающих рад буду получить любое пояснение / видение / список литературы и полезные ссылки / код / алгоритм к моему заданию, а так же пожелания удачи и терпения ![]() Для начала прикладываю требования из методички, которым постараюсь следовать. Общие требования: файл состоит из записей определенной структуры, согласно варианту. Записи имеют ключ, уникальный в пределах файла. Требования к подготовке и выполнению задания 1. Разработать структуру записи двоичного файла согласно варианту задания. 2. Подготовить тестовые данные в текстовом файле с кодировкой ASCII, в соответствии со структурой записи варианта. При открытии файла выполнить контроль его существования и открытия. Примечание. Реализация операций по чтению данных из файла будет проще, если значение для каждого поля записи размещать на отдельной строке текстового редактора. 3. Имя файла вводит пользователь. 4. При открытии файла обеспечить контроль существования и открытия файла. 5. При применении механизма прямого доступа к записи файла выполнить контроль присутствия записи с заданным номером в файле. 6. Разработать функции для выполнения операций:
8. Разработать приложение, демонстрирующее выполнение всех операций, подключив к нему модуль с функциями. 9. Выполнить тестирование приложения, продемонстрировав выполнение всех операций. То, что указано в задании 6 важно. Я обязательно напишу каждую функцию, но пока постараюсь сосредоточиться на основном задании и начну с него. Дабы не усложнять жизнь и кидать сюда код, я всё буду делать в одном файле, потом разнесу и через switch case сделаю минюшку, чтобы удобно всё это тестить. Само же задание(основная функция) звучит так: Структура записи: Учет техосмотра автомобилей. Структура записи об автомобиле: Номер (код региона, цифровой код, буквенный код), Модель, Цвет, Сведения о владельце (Фамилия, Имя, Адрес), дата последнего техосмотра. Доп. Операция: 1. Заменить дату техосмотра у автомобиля с заданным номером на новую дату. 2. Сформировать список авто одной модели, прошедших техосмотр в заданную дату. P.S Пока не могу задать какого-то конкретного вопроса, а просить чтобы растолковали что там вообще в условии написано как-то неловко (хотя я был бы рад). В общем буду писать конкретные вопросы как только смогу их составить. Пока же рад любой информации по теме. Главное — не сдать, а разобраться. Сейчас же постараюсь дойти хотя бы до какой-то части этого процесса. Начну, видимо со структуры и работы с ней. Надеюсь на твоё понимание, дорогой читатель)))
0
|
|
| 10.11.2022, 03:17 | |
|
Ответы с готовыми решениями:
62
Работа с двоичными файлами: слова заданной длины Создать текстовый файл с записями фиксированной длины. |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||||||
| 16.11.2022, 01:22 | |||||||||||
|
Я столько копипаста за последние несколько месяцев вместе взятые не делал
![]() И это признак что что-то не так. Просто для примерчика.
Нужно еще подправить, эта strncpy, очень вредная функция. !!! Добавлено через 9 минут edit : fix some bugs Добавлено через 1 минуту strncpy(infoForHolder, infoForHolderp Там опечятка была. Вообще получилась дикая дичь. У меня волосы дыбом... Добавлено через 10 минут Сделал функцию замены даты. Вообще для копирование данных в поля, стоит сделать метод(ы) какие то, или статический метод. Кликните здесь для просмотра всего текста
1
|
|||||||||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 16.11.2022, 01:34 [ТС] | |
|
Такс. Я увидел там много разных функций. Сейчас ещё чуть-чуть побьюсь головой об стенку и постараюсь разобраться как оно работает
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||||||||
| 16.11.2022, 01:49 | ||||||||||||
|
Что бы уметь вертеть как хотеть. ![]() Добавлено через 8 минут Самописная функция для копирования строк с обрезанием. Вместо strncpy. И ручного добавления нуля в конце.
Конструктор с новой функцией, лучше ведь :
0
|
||||||||||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|||
| 16.11.2022, 02:54 [ТС] | |||
|
Добавлено через 5 минут
0
|
|||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||
| 18.11.2022, 18:59 [ТС] | ||
|
Попробовал я сегодня сдать предыдущую задачу, которая была с файлами .txt. Преподша сказала, что условие до конца не выполнено. Там надо было разбить файл на три части и из него составить новое по условию. Но нигде не было указано, что делать, если файл состоит из такого количества чисел, которое не делится на 3. Мне сказала, надо разбить по частям так, чтобы в одной было больше на один. Я же вообще думал, что если в задании написано, что файл должен таким образом составляться, то он всегда будет нормально делиться на три части... В общем сейчас буду исправлять
![]() Добавлено через 41 минуту
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 18.11.2022, 19:08 | |||
|
Вообще мне нравятся ТЗ со скрытыми условиями. Прям как в реале ![]() char* safecopy(char *dest, const char* src, size_t dest_size)dest - строка назначения (куда копировать) src - строка источник (откуда копировать) dest_size - размер строки назначения. Будет скопировано не более dest_size - 1 символов. Возвращается указатель на строку назначения. Вообще это все не столь важно. И не нужна она здесь особо. Так как структура лишь хранилище данных, а не полноценный инкапсулированный класс. Можно все оставить на код который будет с этой структурой работать. Но такая функция может пригодится, а может и нет этому коду. В зависимости от правил обработки вводных данных. Разработкой этих правил, я, конечно, заниматься не буду.
0
|
|||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||||
| 18.11.2022, 19:17 [ТС] | ||||
![]() Добавлено через 2 минуты Добавлено через 3 минуты
Зачем вообще тут работа с файлами, если можем напрямую со структурой? Странно это
0
|
||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 18.11.2022, 19:23 | ||
|
Тем не менее, случай когда вводимая строка, например модель автомобиля, больше чем может вместить наше поле, по моему "правилу" оно просто обрежется. В реальности такие случаи недопустимы. То есть коду который будет запрашивать данные для структуры (или читать их из текстового файла), придется все равно обрабатывать такие случаи. И должен это делать. Не взирая на то что safecopy() безопасно копирует строки, в контексте кода.То есть, если взять и сказать, что наш код работы со стркутурой, и все другие коды, должны сами отрабатывать такие случаи, то и эта функция (safe) не нужна. Сгодится и strcpy с должными проверками. Добавлено через 2 минуты Вообщем для этой задачи я не вижу никакого смысла что то "мудрить" и усложнять. Просто делаете все максимально топорно. Ctrl+C - Ctrl + V
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 18.11.2022, 19:26 [ТС] | |
|
Как по мне, то, что данные обрезаются при выходе за отведенную им память, то это очень даже хорошо. Конкретно в нашем случае вообще неясно что может быть передано в функцию, поэтому такой подход весьма удобен
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 18.11.2022, 19:27 | ||
|
Так как к примеру : файл с двух чисел 100 200 . делим его на три, целое число не получается, значит минимальная часть 1 1 - часть, размер 1 число (100) 2 - чвсть, размер 1 число (200) 3 - часть размер 0 (файл кончился) () первые две части в первом файле, во втором, третья часть. Ради отмазки можно создать пустой файл, но я в этом смысла не увидел. Добавлено через 57 секунд Это я все на пальцах написал, математически это тоже верно. И давайте впредь, в одной теме обсуждать одну задачу.
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||||
| 18.11.2022, 19:33 [ТС] | ||||
|
Добавлено через 1 минуту Добавлено через 2 минуты
0
|
||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 18.11.2022, 19:34 | |||||||
|
В ФС (файловая система) FAT 16, имя файла могло иметь длину не более 8 символов. В других ФС и более поздних, возможная длина имени увеличилась. При копировании длинных имен на ФС FAT 16, с именами выше 8, применялся след случай.
0
|
|||||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||
| 18.11.2022, 19:54 [ТС] | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 18.11.2022, 20:00 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||||||
| 21.11.2022, 02:42 [ТС] | ||||||
При этом в соседней функции он ни на что не ругается Добавлено через 9 минут Чудейснейшим образом всё поправилось
0
|
||||||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||||||
| 27.11.2022, 23:10 [ТС] | ||||||
|
А я стараюсь не теряться и снова утыкаюсь в стену.
Писал несколько часов "Основное задание", по которому требуется создать 5 функций. Чтобы не быть голословным, сразу покажу что накашеварил. Как по мне, вполне вкусно))).
А теперь собственно вопрос: По заданию требуется реализовать сохранение данных двоичного файла в текстовом, так, чтобы используя их можно было восстановить двоичный файл. Вроооде как для этого существует data файл, но я в этом не уверен. Просто как так можно сохранить, чтобы потом восстановить в текстовый файл? По идее бинарник всегда будет конвертироваться в текстовый, ибо в одном ток цифры, а в другом вообще всё. В общем хочу понять вообще что это за сохранение такое и с чем его едят.
0
|
||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 28.11.2022, 00:09 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
| 28.11.2022, 01:30 [ТС] | |
|
За спойлер, как говорится, спасибо
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 28.11.2022, 01:47 | ||
|
Текстовые файлы с данными, это не тоже самое, что текстовые файлы с произвольным набором символов. К сожалению, сути вопроса так и не понял.
0
|
||
|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
||
| 28.11.2022, 02:02 [ТС] | ||
|
Добавлено через 1 минуту Если бы в условии все было сразу понятно, у меня и вопросов было б меньше. Да и были бы они куда качественнее
0
|
||
| 28.11.2022, 02:02 | |
|
Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины Работа с двоичными файлами Работа с двоичными файлами Работа с двоичными файлами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|