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

Как восстановить список из бинарного файла? - C++

Восстановить пароль Регистрация
 
roma_m
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 36
23.02.2014, 14:35     Как восстановить список из бинарного файла? #1
Помогите написать функцию восстановления списка из бинарного файла
(желательно двумя способами: и использованием стандартной библиотеки С и fstream)
Есть вот такие идеи:
- для библиотеки С:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int loadCFile(list_head *list){
    FILE *f = fopen("info.dat", "rb");
    if (f==NULL){
        printf("File open error\n");
        return 0;
    }
    list_node *wp = list->head;int i=1;printf("4");
    while(!feof(f)){printf("2");
        fread((char*)&wp->data, sizeof(wp->data), i, f);
        wp=wp->next;i++;
    }wp->next=NULL;printf("0");
    fclose(f);
    return 1;
}
- для fstream:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int loadFFile(list_head *list){
    fstream file;
    file.open("info.dat", ios::in|ios::binary);
    if (file.fail()){
        cerr<<"File open error\n";
        return 0;
    }list_node *wp=list->head;
    for(;!file.eof();wp->next=NULL,wp=wp->next)
        file.read((char*)&wp, sizeof(student));
    if (file.fail()){
        cerr<<"File write error\n";
    }file.close();
    return 1;
}
P.S. структуры:
C++ (Qt)
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
/**
 * Структура list_node описывает элемент списка
 */
typedef struct l_node{
    void *data;        // Указатель на данные
    l_node *next;      // Указатель на следующий элемент
} list_node;
 
/**
 * Структура list_head описывает голову списка
 * Значения полей структуры изменяются функциями работы со списком,
 * такими как: list_init(), list_push_back()...
 * Изменять значения полей "вручную" не рекомендуется.
 */
typedef struct {
    list_node *head;    // Указатель на голову списка
    list_node *current; // Указатель на текущий элемент списка
    int list_size;      // Кол-во элементов списка
    compare_func_t func_cmp; // Указатель на функцию сравнения элементов
} list_head;
/**
 *Структура student описывает информацию о элементе списка
 */
typedef struct {
    char name[50];
    int order;
    float average_point;
} student;
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 14:35     Как восстановить список из бинарного файла?
Посмотрите здесь:

Как прочитать заголовок бинарного файла в формате TIFF ? C++
C++ Считывание из бинарного файла и занисение в список
Как прочитать из бинарного файла тип НЕ *char C++
C++ Как записывать и считывать не POD типы данных из бинарного файла?
как считать из бинарного файла AnsiString(ifstream) C++
Как прочитать числа из бинарного файла C++
Чтение бинарного файла C++
Чтение из бинарного файла в линейный динамический список C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gudfar
0 / 0 / 0
Регистрация: 03.03.2014
Сообщений: 2
05.03.2014, 19:57     Как восстановить список из бинарного файла? #2
твоя фамилия не Мельниченко?
Yandex
Объявления
05.03.2014, 19:57     Как восстановить список из бинарного файла?
Ответ Создать тему
Опции темы

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