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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Управление стрелками C++ http://www.cyberforum.ru/cpp-beginners/thread1103384.html
Написал программу, работает. Но вопрос в том, что когда нажимаю на стрелки, мой символ только обновляется с помощью system("cls"). Нужно чтобы он двигался на моем поле. Может ошибка в case ? #include <iostream> #include <conio.h> using namespace std; const int sizeH = 20; const int sizeV = 60; void pole (int arr); void Show(int arr);
C++ С++ компилятор для Linux (Ubuntu) Есть ли какой удобный С++ компилятор для Linux (Ubuntu), как Microsoft Visual Studio? http://www.cyberforum.ru/cpp-beginners/thread1103380.html
C++ Для распараллеливание процессов лучше пользоваться OpenMP или Win32?
Для распараллеливание процессов лучше пользоваться OpenMP или Win32? Называйте темы информативно
C++ Вычислить выражение, находящееся в строковом формате
Всем привет. Я только начинаю изучать С++. И вот на одной из задач я туплю. Попытаюсь объяснить её суть. Есть строка char primer = "20+5/10*7"; Нужно на экран вывести результат, то есть 23,5. Это всё дело нужно решить без помощи классов и структур. У меня получилось преобразовть числа из char в тип double, а вот на арифметических операция я застрял. Ведь надо сначала сделать деление,...
C++ Не подключается graphics.h в Visual Studio http://www.cyberforum.ru/cpp-beginners/thread1103340.html
В общем задача сделать график по формуле. Я работаю с Visual Studio и как только я ввел #include<graphics.h> - оно его сразу подчеркнуло и при построении ругалось: "Cannot open include file: 'graphics.h': No such file or directory" Вот и постал вопрос: как сделать что бы этот модуль заработал или как/чем его заменить? Добавлено через 7 минут И как тогда запустить следующий код? ...
C++ Заполнить массив из пяти значений цифрами (при объявлении) Помогите с заданиями на C++ (Консольное приложение) 0. Заполнить массив из пяти значений цифрами (при объявлении): первое - 123 второе - 94 третье - -12 четвертое - 88 пятое - -9 1. Пользователь вводит 5 чисел, вывести их на экран в обратном порядке подробнее

Показать сообщение отдельно
roma_m
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 36

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

23.02.2014, 14:35. Просмотров 355. Ответов 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;
Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru