![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Master_ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Программа работает, если вместо чтения файла вводить вручную (form_list).
Нужно читать структура из файла. Например файл
Пробовал по разному считать данные в структуру (read_file), но никак не получается.
Как сделать правильно? Это сообщение отредактировал(а) Master_ - 14.3.2009, 00:18 |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
У вас файл в текстовом виде, а вы пытаетесь его как набор байт считать в структуру. Полчаете мусор, а что вы еще ожидали?
Вам нужно построчно считывать файл и из каждой строки уже выбирать значения полей структуры. Проще всего, пожалуй, задействовать стандартные потоковые функции С++. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Файл будете сами записывать или нужно парсить готовый текстовый?
|
|||
|
||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Готовый - только чтение.
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Второй немаловажный момент: Если фамилия и имя будут через пробел, то тогда вам нужно будет как-то обозначить в файле конец строки. Это может быть либо символ разделитель, либо гарантированное форматирование по количеству символов.
Что касается вашего файла - то чтение его производится при помощи 5 строк кода:
Я не создавал никаких массивов - это вы уж сами, а просто показал как считать из файла в структуру. Код чисто учебный и не без огрехов, я только лишь направление вам показываю. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Обсуждалось множество раз. Пользуйся поиском.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Пробую сделать печать списка после чтения из файла.
Печатается только последний элемент. Как перейти на первый элемент структуры?
Это сообщение отредактировал(а) Master_ - 14.3.2009, 12:57 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Сделал так, работает, но после печати ругается(функция print_list) , по-моему после последнего элемента Необработанное исключение в "0x00f11b79" в "14.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcdcd".:
Это сообщение отредактировал(а) Master_ - 14.3.2009, 13:24 |
|||
|
||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Добавил после чтения из файла (конец ф-ии read_file()) в структуру next элемент со значинем null. Т.к. while (p!=NULL).
Может есть способы получше?
|
|||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Есть способы правильнее. У вас не ставится конечный NULL вот и вылетает
Добавлено через 46 секунд А этого кода я не понял. Что вы хотели? |
||||
|
|||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
Master_, не проще std::list использовать?
всё равно у вас программа не сишная. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
| inside_pointer |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
лучше сделать
так как в первом случае при каждом распечатывании структуры она сначала вся копируется в функцию, а потом эта копия распечатывается, а во втором передаётся её адрес (одно число) и потом распечатывается с этого адреса при этом print станет такой
|
||||||
|
|||||||
| Master_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 31.1.2007 Репутация: нет Всего: нет |
Спасибо за помощь.
Еще, может кто-нибудь знает, где бы посмотреть схемы работы со списками (деревьями) в виде примеров или еще чего-нибудь, а то мне нужно нарисовать схему сортировки, а как рисовать это в виде деревьев - не особо представляю |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |