|
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
|
|
Разработать программу управление двоичными файлами с записями фиксированной длины(структура и работа с ней)10.11.2022, 03:17. Показов 4497. Ответов 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 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|