|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||||||||||||
Странности с чтением объекта структуры из файла15.05.2012, 12:49. Показов 1306. Ответов 12
Метки нет (Все метки)
Почему-то возникают проблемы с чтением объектов структуры из файла.
Структура
P.S Да, я в курсе что всё на то что указывают указатели нужно писать отдельно и что оно так как я сейчас делаю не запишеться, но я хочу чтобы писался и читался каркас - обычные поля (не указатели) моей структуры. Добавлено через 2 часа 38 минут Из любопытного ещё: vs2010 даёт вывести ключ что в it2 и он считан правильно, но после этой строчки vs говорит что стеку не хорошо "Run-Time Check Failure #2 - Stack around the variable 'it' was corrupted." Что же делать? Собственно задача писать эту стркутуру через fwrite и читать через fread в бинарник. Как же я по другому её решу.
0
|
||||||||||||||||
| 15.05.2012, 12:49 | |
|
Ответы с готовыми решениями:
12
Проблема с чтением структуры из файла бинарного типа Структуры. Объем занимаемой памяти. Небольшие странности в арифметике Передача структуры в функцию по значению. Странности компилятора под ARM |
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|
| 15.05.2012, 12:57 | |
|
Может быть файл не закрывается?
попробуйте вставить fclose(in);
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||
| 15.05.2012, 13:24 [ТС] | ||||||
|
zss, да нет, я ведь ключ пытаюсь распечатать пока файл открыт. Что-то оно вообще фигня полная происходит с этой fread. Гоняю в дебагере этот код и что я вижу
Как эти fread и fwrite вообще работают то? Может я всё же не правильно им передаю что писать/читать? Им адрес надо давать объекта стркутуры, или указатель на него или адрес указателя ? Они же всё принимают и угадывай потом что оно записало, а что считало. Добавлено через 5 минут Наверное надо пробовать с malloc'ами это дело решать, ато фигня просиходит.
0
|
||||||
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
||||||
| 15.05.2012, 13:33 | ||||||
|
С трудом, но нашел!!!
1
|
||||||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 15.05.2012, 13:58 [ТС] | |
|
Через malloc вроде более-менее вменяемо читает. По крайней мере чудес тем что читаешь в один указатель, а меняется другой теперь нет.
Остаётся одна проблема: мне нужно в бинарник отдельно писать строки char (длину и сдвиг я буду знать для каждой из строк), как мне при необходимости потом удалять такие строки? Ну вот пример: есть у меня 3 строки: "string1." , "string2." и "string3.". Все они в файле в бинарном виде записаны примерно так "string1.string2.stirng3." Мне нужно удалить "string2.". Я знаю сдвиг до неё (8*sizeof(char)). Как теперь удалить её так чтобы получилась строка "string1.string3." ? Временный файл куда всё это будет переписываться, а потом удаляться оригинал и временный называться как положено заводить не хотелось бы. Добавлено через 2 минуты zss, ну я методом тыка определил что оно так хочет видеть. Осталась проблема с удалением ну или сдвигом куска файла чтобы одну из записей можно было затирать. Добавлено через 2 минуты zss, ну я методом тыка определил что оно так хочет видеть. Осталась проблема с удалением ну или сдвигом куска файла чтобы одну из записей можно было затирать.
0
|
|
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||
| 15.05.2012, 14:10 | ||
|
1
|
||
| 15.05.2012, 14:18 | |||||||
|
Я бы реализовал операции с файлами через сериализацию Item, преобразовывая Item* в char* и наоборот.
0
|
|||||||
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||
| 15.05.2012, 14:29 | ||
|
Как видите нюансы есть. Тогда возникает вопрос: зачем?
0
|
||
| 15.05.2012, 14:36 | ||
|
Про эти "нюансы" я и без Вас знаю, не понятно, чем они Вам помешали при чтении с fread :-)
Кстати:
Так что у Вас неверные сведения.
0
|
||
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||
| 15.05.2012, 14:54 | ||
![]() Добавлено через 2 минуты
0
|
||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||
| 15.05.2012, 18:00 [ТС] | ||
|
1) Записали размер таблицы, записали таблицу, записали данные, всё хорошо. 2)Считали таблицу всё хорошо. Добавили элемент -> пишем в файл, таблица увеличилась - беда-беда данные нужно сдвинуть. Беда-беда данные сдвинули, а в таблице же ссылки на данные без сдвига, перебираем всю таблицу, меняем сдвиги, фух. Вроде всё. 3)Считали таблицу -> удалили элемент. Беда-беда. Длина таблицы уменьшилась. Беда-беда, элемент удалили первый, а у нас их там ещё на 3 мегабайта после него записано, что делать, как двигать. Чтобы всё ещё сложнее казалось работать надо черезе этот тупой сишный FILE* с его сишной манерой работы да сишными ошибками. В общем ужас.
0
|
||
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
||
| 17.05.2012, 14:47 | ||
|
В один пишем заголовки, а в другой содержимое.
0
|
||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 17.05.2012, 16:00 [ТС] | |
|
zss, да это логично, я бы так сделал будь задание "реализовать вводи и вывод данных в файл". А тут ведь препод считает себя умнее всех и не даёт места для творчества вот и пишет как это нужно делать пошагово что именно в файл и что именно таблица сохраняется в конце, а инфо сразу... хотя я вот думаю запилить всё же как это удобно мне (сразу сохранять и таблицу и инфо + читать в начале сразу таблицу вместе с инфо в оп), может препод не сильно будет придираться, ато с этими сдвигами уж слишком много проблем возникает.
0
|
|
| 17.05.2012, 16:00 | |
|
Помогаю со студенческими работами здесь
13
чтением из файла.... Ошибка с чтением файла Проблемы с чтением файла на c++ Проблема с чтением из файла Проблемы с чтением из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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
/ *
Дана цепь постоянного тока с 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/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|