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

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

Войти
Регистрация
Восстановить пароль
 
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
#1

Запись структур в файл - C++

12.03.2010, 01:49. Просмотров 966. Ответов 8
Метки нет (Все метки)

У меня есть файл и масив структур. Надо реализовать запись и чтения файла. Можна ли сделать так: запускаю первый раз програму, ввожу дание в файл, потом, при последующих запусках чтобы масив розширался, в зависимости от количества структур, что я ввел???

Добавлено через 1 час 12 минут
Есть у кого мысли???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2010, 01:49     Запись структур в файл
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
12.03.2010, 06:45     Запись структур в файл #2
Ну первым делом создаешь функцию чтения из файла, заполняешь массив.
Потом добавляешь или удаляешь элементы, вновь записываешь в файл. И так сколько угодно.

Если неправильно тебя понял, переформулируй вопрос.
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.03.2010, 08:56  [ТС]     Запись структур в файл #3
Как сделеть, чтоб при выполнении програми можна было менять размер масива.
Сначала открываю файл, нахожу сколько у меня елементов масива структур, потом в конце добазаписиваю в файл еще один елемент масива, и так далее. Я точно незнаю, но может ето понятие динамического масива???
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
12.03.2010, 09:41     Запись структур в файл #4
Цитата Сообщение от MILAN Посмотреть сообщение
Как сделеть, чтоб при выполнении програми можна было менять размер масива.
Сначала открываю файл, нахожу сколько у меня елементов масива структур, потом в конце добазаписиваю в файл еще один елемент масива, и так далее. Я точно незнаю, но может ето понятие динамического масива???
немного понял, но наверно такое сделать нельзя. Есть один способ, но не знаю, прокатит ли.
Ты заранее динамически задаешь массив бОльшей размерности. Записываешь те значения в массив, как при нормальном размере, а потом дописываешь новые значения, которые идут после конца исходного массива, но до конца заданного

Например в файле есть
0 5 1 2
размер - 4
ты задал размер 6
считал 0 5 1 2 * *
там где * - можешь ставить свои значения
kuroiryuu
316 / 300 / 23
Регистрация: 05.11.2009
Сообщений: 712
Завершенные тесты: 2
12.03.2010, 12:00     Запись структур в файл #5
лучше всего в данном случаи работать напрямую с файлом и в памяти хранить только одну структура, а не массив...
так вы себя не ограничиваете объемом памяти, и мучаетесь с динамическими массивами, но для добавления данных в файл или удаления вам придётся самому написать функцию, которая добавляет или удаляет вашу запись из файла. Редактирование в этом случаи делается просто заменой старой информации на новую.
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
12.03.2010, 16:02     Запись структур в файл #6
Цитата Сообщение от MILAN Посмотреть сообщение
Как сделеть, чтоб при выполнении програми можна было менять размер масива.
Сначала открываю файл, нахожу сколько у меня елементов масива структур, потом в конце добазаписиваю в файл еще один елемент масива, и так далее. Я точно незнаю, но может ето понятие динамического масива???
Тому есть масса решений. Два на вскидку:
А)
1. открыть файл для чтения / fopen(name, "rb"); /
2. получить его размер, разделить на размер структуры - получится количество структур в файле
3. создать динамический массив на столько структур
4. прочитать их все из файла в массив, закрыть файл.
5. для добавления нового элемента изменить размер массива / realloc() /
6. открыть файл для добавления / fopen(name, "ab") /
7. дописать в файл новые структуры, закрыть файл

Б)
1 - 5 то же самое
6 открыть файл для записи / fopen(name, "wb") /
7 записать весь массив, закрыть файл

мало того! ещё есть вариант - сделать одно(двух) связный список, где в качестве данных как раз объекты структуры храниться будут...
Это, если на С. А на С++ лучше активно использовать контейнеры STL.
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
13.03.2010, 16:26  [ТС]     Запись структур в файл #7
Приведите пример програмки, пожалуста!!!

Добавлено через 1 час 55 минут
Очень надо!!!

Добавлено через 2 часа 21 минуту
easybudda, помогите пожалуста!!!!

Добавлено через 19 часов 19 минут
Ни у кого нету мислей???
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.03.2010, 17:25     Запись структур в файл #8
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
typedef struct Point
{
    int x, y;
}   POINT, * PPOINT;
 
int main () 
{
    string filename = "in.txt";
    ifstream ifs(filename.c_str(), ifstream::in);
 
    vector<POINT> v;
    POINT p;
    
    // Чтение
    while(ifs)
    {
        ifs >> p.x;
        ifs >> p.y;
        
        v.push_back(p);
    }
    
    for(int i = 1; i < v.size(); ++i)
        cout << v[i].x  << ' ' << v[i].y << endl;
    
    ifs.close();
    
    // Ввод
    int am = 0;
    cout << "Amount structs to enter: ";
    cin >> am;
    
    while(am--)
    {
        cout << "Enter the X: ";
        cin >> p.x;
        
        cout << "Enter the Y: ";
        cin >> p.y;
        
        v.push_back(p);
    }
    
    // Запись в файл
    ofstream ofs(filename.c_str(), fstream::out);
 
    for(int i = 1; i < v.size(); ++i)
        ofs << v[i].x << ' ' << v[i].y << endl;
        
    ofs.close();
}
Добавлено через 22 минуты
Содержимое in.txt
Код
8 0
8 0
1 2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2010, 18:43     Запись структур в файл
Еще ссылки по теме:

Запись в файл некоторого количества структур - C++
Надо записать в файл некоторое количество записей, не используя массивов. Знаю что надо через write(), но вот как правильно передать...

Fwrite и freed, запись массива структур в файл - C++
Структура struct str { int date; }; Запись в структуру void GetData(str *M, int N) { cin.ignore(); for (int i = 0;...

Запись значений в массив структур - C++
например есть структура struct position { int x,y; }; и массив из структуры position way;

Запись и чтение структур данных - C++
Изучаю структуры данных в C++. Решил написать программу, которая просто получает данные для структуры и записывает структуру в файл txt. ...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
13.03.2010, 18:43     Запись структур в файл #9
Цитата Сообщение от MILAN Посмотреть сообщение
Ни у кого нету мислей???
Мыслей полная голова! Вот времени не хватает... Тут посмотрите - не совсем то, но как пример, сгодится...
Yandex
Объявления
13.03.2010, 18:43     Запись структур в файл
Ответ Создать тему
Опции темы

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