|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
Разработать программу управление двоичными файлами с записями фиксированной длины(структура и работа с ней)10.11.2022, 03:17. Показов 4412. Ответов 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 | |
|
Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины Работа с двоичными файлами Работа с двоичными файлами Работа с двоичными файлами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|