Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
#1

Запись в файл некоторого количества структур - C++

18.04.2013, 23:18. Просмотров 364. Ответов 8
Метки нет (Все метки)

Надо записать в файл некоторое количество записей, не используя массивов.
Знаю что надо через write(), но вот как правильно передать параметры ..
Есть структура
C++
1
2
3
4
5
6
struct examen 
{
    char group[80];
    char date[50];
    char subject[100];
}timelable;
В цикле записываются структуры..

Добавлено через 15 минут
А кажется так))
C++
1
out.write((char*)&timelable,sizeof(timelable));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2013, 23:18     Запись в файл некоторого количества структур
Посмотрите здесь:

Запись структур в файл - C++
У меня есть файл и масив структур. Надо реализовать запись и чтения файла. Можна ли сделать так: запускаю первый раз програму, ввожу дание...

Запись структур в файл - C++
можно ли сделать так что бы структуру base, которую нужно записать несколько раз в файл а потом считать, без константы MAX и без ее...

Запись структур в файл - C++
Здравствуйте! Имеется структура struct user { char login; char password; }; Записываю несколько таких в файл

Запись структур в файл - C++
Доброго всем времени суток.:dance: Обращаюсь к вам с таким вопросом : Взяв за основу Задача 2 Лабораторной работы изменить код...

Запись в файл структур(с указателем) - C++
Добрый день, подскажите, как корректно записать и прочитать в файл структуру, если она содержит указатель на другую струкруту? struct two...

Запись классов, структур в файл - C++
Подскажите как правильно, записывать и читать данные с файла, особенно если записываются данные разных типов) Работает но как то не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
18.04.2013, 23:24     Запись в файл некоторого количества структур #2
C++
1
out << timelable.group << endl << timelable.date << endl << timelable.subject << endl;
Если fstream. Или надо сразу целую структуру?
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
18.04.2013, 23:26     Запись в файл некоторого количества структур #3
Цитата Сообщение от knf Посмотреть сообщение
А кажется так))
Код C++
1
out.write((char*)&timelable,sizeof(timelable));
Нет не так, подумайте дольше над строками. Подсказка выведите sizeof(timelable) и посмотрите чему он равен.
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
18.04.2013, 23:36  [ТС]     Запись в файл некоторого количества структур #4
stima,
C++
1
cout<<sizeof(timelable)
==230

Добавлено через 1 минуту
C++
1
out.write((char*)&timelable,sizeof(timelable));
Вообще, так записалось, но по какой-то причине при чтении из файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int print(char filename[80])
{   examen ex;
    ifstream in(filename);
    if(!in.is_open())
    {
        cout<<"Такого файла не существует";
        return 1;
 
    }
    while(!in.eof())
    {
        in.read((char*)&timelable,sizeof(timelable));
        cout<<"Группа";
        cout<<timelable.group<<endl;
 
        cout<<"Дата";
        cout<<timelable.date<<endl;
 
        cout<<"Предмет";
        cout<<timelable.subject<<endl;
 
 
    }
 
return 0;
}
Выводит два раза. Почему-то не достигается конец файла...
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
18.04.2013, 23:46     Запись в файл некоторого количества структур #5
По поводу sizeof() забейте, вечер, поздно голова думала о другом.
По повод eof() в случае чтения побайтно пишите так
C++
1
for ( ; in.read((char*)&timelable,sizeof(timelable)); )
Почему? Кратко EOF это тоже байт)
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
18.04.2013, 23:50  [ТС]     Запись в файл некоторого количества структур #6
stima, А можно подробнее про последнее?) Если не сегодня, то завтра) просто все тут придется объяснять
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
19.04.2013, 01:10     Запись в файл некоторого количества структур #7
Попытаюсь обьяснить. По поводу того почему мы 2 раза итерируемся.
1. Вы считали успешно впритык. eof нету.
2. Вы попросили читать еще раз. Данных для считывания нет. eof есть.

По поводу одинаковых данных. Вы просто не перезатерли предидущие данные. Обьявите переменную локально, и проинициализируйте ее поля Вашей меткой. Так вот во второй раз выведется метка.
MrGluck
Модератор
Эксперт CЭксперт С++
7171 / 4337 / 633
Регистрация: 29.11.2010
Сообщений: 11,784
19.04.2013, 02:54     Запись в файл некоторого количества структур #8
Есть 2 пути:
1) извращаться с бинарным считыванием, write, sizeof, все такое
2) записать как если бы это был вывод на экран, только направить в файл

Можно перегрузить для вашей структуры оператор <<
C++
1
2
3
4
5
std::ostream & operator<< (std::ostream &out, const examen &e)
{
    out << e.group << std::endl << e.date << std::endl << e.subject << std::endl;
    return out;
}
и выводить данный структурный тип данных как если бы это был POD тип.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2013, 17:13     Запись в файл некоторого количества структур
Еще ссылки по теме:

запись массива структур в файл - C++
Запись массива структур в файл так, что бы потом можно было считывать, удалять ненужные записи, добавлять, сортировать, поиск. Я пробовал...

Упорядочить файл структур по убыванию количества жителей (при равенстве - по возрастанию площади) - C++
Есть задача. Меня конкретно интересует как упорядочить по возрастанию площади, если количество жителей одинаковое. У меня расставляет по...

Запись массива структур в бинарный файл - C++
Есть структура Owner: struct Owner{ char name; unsigned int purse; short catb; void addcat(short num); }; ...

Запись массива структур в бинарный файл - C++
Одно из полей структуры типа String, нужно записать массив структур в бинарный файл: struct NOTEBOOK { string model; // наименование ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
19.04.2013, 17:13  [ТС]     Запись в файл некоторого количества структур #9
У нас требуется
Цитата Сообщение от MrGluck Посмотреть сообщение
извращаться
Yandex
Объявления
19.04.2013, 17:13     Запись в файл некоторого количества структур
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru