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

Сохранение списка в файл! - C++

Восстановить пароль Регистрация
 
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
19.02.2014, 21:22     Сохранение списка в файл! #1
Здравствуйте! Подскажите пожалуйста метод решения! Имеется задание: создать функцию записи списка в файл и функцию его восстановления из файла! Имеется такая наброска:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int insert(list_head *list){
 
    FILE *f = fopen("info.txt", "wb");
    if (f==NULL){
        printf("File open error\n");
        return 0;
    }
 
        fwrite((char*)&list, sizeof(student), 1, f);
    fclose(f);
    return 0;
}
Для полной ясности сбрасываю и структуры:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
typedef struct {
    char name[50];
    int order;
    float average_point;
} student;
 
/**
 * Структура list_node описывает элемент списка
 */
typedef struct l_node{
    void *data;        // Указатель на данные
    l_node *next;      // Указатель на следующий элемент
} list_node;
 
/**
 * Структура list_head описывает голову списка
 */
typedef struct {
    list_node *head;    // Указатель на голову списка
    list_node *current;  // Указатель на текущий элемент списка
    int list_size;      // Кол-во элементов списка
    compare_func_t func_cmp; // Указатель на функцию сравнения элементов
} list_head;
Добавлено через 54 минуты

Меня интересует только правильно ли я записываю данные списка в файл или нет?

Добавлено через 42 минуты
объясните пожалуйста

Добавлено через 1 час 16 минут
Я немного поменял код!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int insert(list_head *list){
list_node *pr=list->head;
    FILE *f = fopen("info.txt", "wb");
    if (f==NULL){
        printf("File open error\n");
        return 0;
    }
    if(list->head!=NULL){
        fwrite((char*)&pr, sizeof(student), 1, f);
    pr=pr->next;}
    fclose(f);
    return 0;
}
Но получается, что оно сохраняет в файл, только последний введенный элемент списка! А как сделать, чтобы сохранялся весь список?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2014, 21:22     Сохранение списка в файл!
Посмотрите здесь:

C++ Сохранение вектора в файл
Сохранение в файл C++
C++ сохранение в файл
C++ сохранение в файл
C++ Файл: При сохранение в файл big100.txt в блокноте отображаются иероглифы, почему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
20.02.2014, 00:16     Сохранение списка в файл! #2
Надо сохранять поле data, а не узлы.
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
20.02.2014, 00:34  [ТС]     Сохранение списка в файл! #3
Цитата Сообщение от DrOffset Посмотреть сообщение
Надо сохранять поле data, а не узлы.
C++
1
2
        fwrite((char*)&pr->data, sizeof(student), 1, f);
}
так?
DrOffset
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
20.02.2014, 00:58     Сохранение списка в файл! #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от yurets17 Посмотреть сообщение
C++
1
2
        fwrite((char*)&pr->data, sizeof(student), 1, f);
}
так?
Скорее так (но только в том случае, если там data действительно указывает на объекты типа student):
C++
1
fwrite(pr->data, 1, sizeof(student), f);
Yandex
Объявления
20.02.2014, 00:58     Сохранение списка в файл!
Ответ Создать тему
Опции темы

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