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

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

Восстановить пароль Регистрация
 
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.03.2010, 01:49     Запись структур в файл #1
У меня есть файл и масив структур. Надо реализовать запись и чтения файла. Можна ли сделать так: запускаю первый раз програму, ввожу дание в файл, потом, при последующих запусках чтобы масив розширался, в зависимости от количества структур, что я ввел???

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

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

Например в файле есть
0 5 1 2
размер - 4
ты задал размер 6
считал 0 5 1 2 * *
там где * - можешь ставить свои значения
kuroiryuu
 Аватар для kuroiryuu
311 / 295 / 23
Регистрация: 05.11.2009
Сообщений: 698
Завершенные тесты: 2
12.03.2010, 12:00     Запись структур в файл #5
лучше всего в данном случаи работать напрямую с файлом и в памяти хранить только одну структура, а не массив...
так вы себя не ограничиваете объемом памяти, и мучаетесь с динамическими массивами, но для добавления данных в файл или удаления вам придётся самому написать функцию, которая добавляет или удаляет вашу запись из файла. Редактирование в этом случаи делается просто заменой старой информации на новую.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
13.03.2010, 16:26  [ТС]     Запись структур в файл #7
Приведите пример програмки, пожалуста!!!

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

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

Добавлено через 19 часов 19 минут
Ни у кого нету мислей???
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 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++
Fwrite и freed, запись массива структур в файл C++
C++ Запись массива структур в бинарный файл

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

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

Текущее время: 03:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru