2 / 2 / 0
Регистрация: 13.03.2016
Сообщений: 18
|
||||||
1 | ||||||
Вылет при чтении из бинарного файла25.04.2016, 18:41. Показов 1170. Ответов 8
Метки нет Все метки)
(
Уважаемые товарищи, пожалуйста, помогите понять почему приведённые ниже функции, записывающие или читающие бинарный файл, работают или не работают в зависимости от длины информационного поля name типа string.
Добавлено через 1 минуту Прошу прощения. Сильно торопился. Название темы должно было быть: "Вылет при чтении из бинарного файла"
0
|
|
25.04.2016, 18:41 | |
Ответы с готовыми решениями:
8
"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла Ошибка при чтении бинарного файла Лишние символы при чтении бинарного файла Ошибка при чтении/записи из бинарного файла |
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
25.04.2016, 18:46 | 2 |
![]() Решение
Потому что программа у тебя неправильная. Ты указываешь размер указателя, а не структуры при записи. Но даже если бы указывал правильно, то всё равно твою структуру так не запишешь. Нужно каждое поле string отдельно записывать: длину и содержимое. Много раз обсуждали это.
0
|
2 / 2 / 0
Регистрация: 13.03.2016
Сообщений: 18
|
|
25.04.2016, 19:00 [ТС] | 3 |
f.write((char*)q, sizeof(q)); на f.write((char*)q, sizeof(Node)) исправил уже. А без постоянной записи длины обойтись нельзя?
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
25.04.2016, 19:06 | 4 |
Ну а как ты потом считывать будешь? Текст же разной длины может быть, как узнать сколько байт извлечь без длины?
Это не поможет, string в индивидуальном порядке записывать.
0
|
2 / 2 / 0
Регистрация: 13.03.2016
Сообщений: 18
|
|
25.04.2016, 19:10 [ТС] | 5 |
То есть остаётся только, или постоянно записывать длину, или использовать статические массивы?
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
25.04.2016, 19:24 | 6 |
Да. Только со статическими массивами ты будешь записывать неиспользуемые байты.
0
|
44 / 44 / 12
Регистрация: 05.04.2015
Сообщений: 345
|
|
25.04.2016, 19:27 | 7 |
Или использовать готовые классы для этого. Один из вариантов QDataStream из Qt.
0
|
2 / 2 / 0
Регистрация: 13.03.2016
Сообщений: 18
|
||||||
25.04.2016, 19:28 [ТС] | 8 | |||||
А с текстовыми файлами почему-то всё работает нормально
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
25.04.2016, 19:32 | 9 |
Потому что есть разделитель - конец строки.
0
|
25.04.2016, 19:32 | |
Помогаю со студенческими работами здесь
9
Почему при чтении бинарного файла происходит экстренное завершение программы? Ошибка при чтении записи строки и вылет в другой код Ошибка при чтении бинарного файла Нечастые крякозябры при чтении из бинарного файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |