| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Помогите, пожалуйста, с задачей |
| Автор: rujmaster 9.4.2009, 16:26 | ||
| Написать программу, осуществляющую чтение из текстового файла данных в массив структур и последующий вывод этого массива в двоичный файл. Содержимое текст файла: Вася 5А 4.8 Петя 6А 8.8 Зина 5А 4 Ваня 5Б 8.9 Сережа 5А 4.4 Код:
Данный вариант выводит только первую строку. Как осуществить вывод всех строк в массив, если их число заранее неизвестно. Также непонятно, каким образом осуществлять вывод массив в двоичный файл. Помогите разобраться |
| Автор: rujmaster 9.4.2009, 18:26 | ||
Саму суть вроде понял, правда как вбивать массив в двоичный файл так и не дошло, поэтому пока что заменил выводом массива на экран. Вот что получилось:
Все компилирует, но программа вывлаивается с ошибкой. |
| Автор: zim22 9.4.2009, 19:14 | ||||||
у вас a - массив структур. выводите в printf каждое поле отдельно.
|
| Автор: Annihilator 9.4.2009, 19:18 | ||||||||
Начнем с того, что функция принимает указатели, поэтому
Как-то так
А вообще у тебя плохая реализация - считываешь сколько есть и... все в структуру(!) у тебя первые 10 байт запишуться в
потом еще 2 в
а далее вообще белиберда, только благо что POD-структура |
| Автор: rujmaster 9.4.2009, 19:23 |
| а как тогда правильно обьявить структуру? |
| Автор: Anikmar 9.4.2009, 22:53 | ||
Объявлена правильно - считывание неправильно. Необходимо считывать по-отдельности каждое поле. Как-то так:
|
| Автор: rujmaster 10.4.2009, 09:20 | ||
Вот, вроде работает, все считывает и нормально выводит на экран.
НО возник вопрос с записью в двоичныи файл. Как я понял: fread(s1, s2, s3, s4) где s1-указатель на данные, s2- размер ОДНОГО элемента, s3- число элементов, s4 -выходной поток. Если у меня данные представлены в виде массива структур, что берется за 1 элемент? И как наити число этих элементов? |
| Автор: rujmaster 10.4.2009, 14:43 | ||
Кажется, разобрался. проверьте, пожалуйста
|
| Автор: Anikmar 10.4.2009, 16:57 |
Что это за наворот? Вам нужен char* - у поля структуры name - тип char[20] - при использования без индекса только имени массива будет char*, никаких преобразований не нужно, НО В двоичный файл можно записать структуру одной командой: fwrite((char*)&a[i], sizeof(a[i]),... |