![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
rujmaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Написать программу, осуществляющую чтение из текстового файла данных в массив структур
и последующий вывод этого массива в двоичный файл. Содержимое текст файла: Вася 5А 4.8 Петя 6А 8.8 Зина 5А 4 Ваня 5Б 8.9 Сережа 5А 4.4 Код:
Данный вариант выводит только первую строку. Как осуществить вывод всех строк в массив, если их число заранее неизвестно. Также непонятно, каким образом осуществлять вывод массив в двоичный файл. Помогите разобраться ![]() |
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Использовать структуру + vector
Дело техники - вывод структур в файл. Создайте структуру с описанием одной строки, затем последовательно счиайте из файла и добавляйтие в вектор. |
||||
|
|||||
rujmaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Саму суть вроде понял, правда как вбивать массив в двоичный файл так и не дошло, поэтому пока что заменил выводом массива на экран. Вот что получилось:
Все компилирует, но программа вывлаивается с ошибкой. |
|||
|
||||
zim22 |
|
||||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
у вас a - массив структур. выводите в printf каждое поле отдельно.
Это сообщение отредактировал(а) zim22 - 9.4.2009, 19:17 |
||||||
|
|||||||
Annihilator |
|
||||||||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
Начнем с того, что функция принимает указатели, поэтому
Как-то так
А вообще у тебя плохая реализация - считываешь сколько есть и... все в структуру(!) у тебя первые 10 байт запишуться в
потом еще 2 в
а далее вообще белиберда, только благо что POD-структура -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
||||||||
|
|||||||||
rujmaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
а как тогда правильно обьявить структуру?
![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Объявлена правильно - считывание неправильно. Необходимо считывать по-отдельности каждое поле. Как-то так:
Это сообщение отредактировал(а) Anikmar - 9.4.2009, 22:53 |
|||
|
||||
rujmaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Вот, вроде работает, все считывает и нормально выводит на экран.
![]()
НО возник вопрос с записью в двоичныи файл. Как я понял: fread(s1, s2, s3, s4) где s1-указатель на данные, s2- размер ОДНОГО элемента, s3- число элементов, s4 -выходной поток. Если у меня данные представлены в виде массива структур, что берется за 1 элемент? И как наити число этих элементов? |
|||
|
||||
rujmaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
Кажется, разобрался. проверьте, пожалуйста
![]()
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Что это за наворот? Вам нужен char* - у поля структуры name - тип char[20] - при использования без индекса только имени массива будет char*, никаких преобразований не нужно, НО В двоичный файл можно записать структуру одной командой: fwrite((char*)&a[i], sizeof(a[i]),... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |