|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||||||||||||
Файл произвольного доступа03.07.2011, 14:36. Показов 6618. Ответов 34
Метки нет (Все метки)
Очень прошу помощи так как не могу с ними разобраться который день, видать делаю одну и ту же ошибку но не нахожу. Создаю свой класс и потом когда пытаюсь его записать и считать возникают ошибки.
Ну да наверное проще начать обо всём по порядку чтобы не запутывать. Проблема первая: файл каждый раз после записи 10 объектов моего класса в бинарном режиме при открытии текстовым редактором выглядит по разному, хотя размер его одинаковый, это меня настораживает. Пример: запускаю скомпилированное приложение чтобы оно записало 10 объектов моего класса ClientData созданных конструктором по умолчанию и открываю через текстовый редактор и вижу символы :u.ы-I, закрываю и открываю опять своё приложение и вижу уже символы :ucИќ, за третим разом :uО(фҐ , тоесть первые 2 символа всегда те же, а остальные меняются, так ведь быть не должно? Значит ошибка у меня в классе? Тогда просьба подсказать где именно вроде строки уже не использую и все типы данных не должны меняться ... Сам класс ClientData мой представляет собой класс с 3мя данными (номер, имя, баланс) и set и get методами для них (проверок кое-где нету, но не в них суть). ClientData.h (Заголовочный файл к классу)
0
|
||||||||||||||||
| 03.07.2011, 14:36 | |
|
Ответы с готовыми решениями:
34
Файл произвольного доступа Файл произвольного доступа Не могу прочитать файл произвольного доступа с конца |
|
Заблокирован
|
|
| 04.07.2011, 14:38 | |
|
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 08.07.2011, 01:25 [ТС] | |
|
easybudda, годиться, а теперь бы ещё чего подобного на удаление файла (задача обновить старый файл новым, то есть удалить старый и переименовать новый чтобы он назывался так же как и старый).
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 08.07.2011, 12:22 [ТС] | |
|
Годиться, сейчас попробую применить.
Ну и ещё один вопрос что возник при чтении книги: а как-то можно указать постоянные пути к файлу? Пробовал писать что-то вроде open("c:\1.txt",ios::int) но оно хоть и компилируется, но файл не видит тогда ни в корне диска с, ни в папке с программой, подозреваю что оно начинает искать в папке с программой файл с именем "c:\1.txt" и не находит его.
0
|
|
|
Freelance
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
|
|
| 08.07.2011, 12:25 | |
|
Gepar, Поставь двойной бэкслеш: c:\\1.txt
1
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 08.07.2011, 16:00 [ТС] | |
|
А вот ещё пока класс пишу возник вопрос: как почистить файл от данных (файл последовательного доступа, просто символьные данные в нём). Можно бы закрыть файл и открыть файл снова например (ios::out) и тогда всё содержимое должно убраться, но так как планируется это делать из функции то тогда вопрос связанный с этим: как узнать в функции какой же файл ей передан ?Есть функция например
void del(fstream& file), как же узнать что этот file является моим 1.txt например? Тогда бы я смог его закрыть и открыть в функции снова например чтобы почистить, хотя может есть и просто функция чтобы файл очистить то? Добавлено через 4 минуты asics, так работает, странно что я сам с двумя слешами не додумался попробовать файл открывать.
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 09.07.2011, 19:06 [ТС] | |
|
А узнать из функции что за файл ей передали всё же можно (получая только файл)? Это так, для общего развития, ну там например чтобы функция print выводила в начале название файла что она печатает, только именно функция, а не в main там перед тем как печатать файл уже. Возможность получить название класса объект которого получен есть ведь, вот думаю и здесь может всё же что-то есть изначально.
Добавлено через 2 минуты Это заодно и помогло бы с функцией remove, которой название файла же надо получить. Оно то можно сделать символьную строку в main и её и передавать как аргумент сначала при создании файла, а потом и при удалении, но хотелось бы похитрее ![]() Добавлено через 5 часов 25 минут Что-то не подключается этот truncate с #include <unistd.h>, всё равно пишет что не объявлен никакой truncate. Добавлено через 51 минуту И ещё маленький вопрос (надеюсь не задолбал я всех ещё ): есть ли какая функция для работы с файлами чтобы убирала сразу и конец файла и устанавливала курсор в начало файла? Я постоянно то забуду курсор перевести то метку конца файла сбросить и потом сижу ищу где я протупил, было бы хорошо будь одна функция делающая и первое и второе.
0
|
|
|
Freelance
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
|
|
| 09.07.2011, 19:11 | |
|
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 10.07.2011, 02:30 [ТС] | |
|
easybudda, нет, ну удобнее и нагляднее было бы да и вообще неужто для выброса исключений не придумали хотя бы функции возвращающей имя файла.
asics, ну мне приходится пользоваться seekg / seekp + приходится чистить конец файла с помощью file.clear. Когда перестанавливаешь курсор конец файла не убирается же так что после переустановки курсора через seekg(0) цикл while(!file.eof()) выполняться не будет так как конец файла уже установлен в 1. Иными словами seekg(0) не убирает метку конца файла вот я и хотел бы как-то хитро чтобы и конец файла убирало и в начало файла переставляло.
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||
| 11.07.2011, 07:37 [ТС] | ||
|
0
|
||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
|
|||||||
| 11.07.2011, 10:21 | |||||||
![]()
0
|
|||||||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 11.07.2011, 12:17 [ТС] | |
|
easybudda, не, си тоже не пойдёт, когда так открываешь файл то теряешь возможность писать в него всё скопом через ввод в поток вида f<<infromation<<endl<<... Я видел что у си там побольше возможностей по открытию файла.
0
|
|
| 11.07.2011, 12:17 | |
|
Создание файла произвольного доступа Создание файла произвольного доступа.
Обработка файлов произвольного доступа
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
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).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|