Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2008, 21:25   #1
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию Загрузка связанного списка из файла (Си)

Есть однонаправленный связанный список и топовый указатель:
Код:
struct list
{
    char ls_title[20]; 
    char ls_name[20];
    char ls_pass[20]; 
    struct list *next;
};
struct list *head_pointer = NULL; /* Начальный указатель */
Так же есть функция, для сохранения этого списка в файл:
Код:
void save_data(struct list *current_pointer)
{
    FILE *fp;

    if((fp=fopen(base_name, "w+b"))==NULL)
    {
        puts("\n\nError!\nPress any key to continue...");
        getch();
        return;
    }

    while(current_pointer!=NULL)
    {
        fwrite(current_pointer->ls_title, sizeof(char), 20, fp);
        fwrite(current_pointer->ls_name, sizeof(char), 20, fp);
        fwrite(current_pointer->ls_pass, sizeof(char), 20, fp); 
        current_pointer = current_pointer->next;
    }

    fclose(fp);
}
Вроде все сохраняется правильно.
Теперь вопрос: как его потом загрузить из файла? У меня получается большой алгоритм с кучей ошибок. Как это сделать лучше всего?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 13.12.2008, 22:47   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

А ты пиши так - записал один элемент списка - перешел на другую строку. Так будешь читать построчно файл. Считал строку - парсишь ее на слова и забиваешь в список свой.
MaTBeu вне форума Ответить с цитированием
Старый 13.12.2008, 23:10   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Я тут использую блочный ввод/вывод
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 14.12.2008, 14:02   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Хм... это как же? А то по твоему коду сразу так и не скажешь...
MaTBeu вне форума Ответить с цитированием
Старый 14.12.2008, 15:00   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Ну файл открывается в бинарном режиме - fp=fopen(base_name, "w+b")
Дальше записывается функцией fwrite(current_pointer->ls_title, sizeof(char), 20, fp);
Это и есть блочный ввод.
Блочный ввод тут необходим потому-что я записываю в файл еще некоторые данные, кроме этой структуры, типа int, которые потом нужно будет загружать как число.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка файла на сервер Pum Работа с сетью в Delphi 11 14.03.2009 08:58
помогите удалить элемент из связанного списка kermit Помощь студентам 5 13.06.2008 10:14
Загрузка Файла Volkogriz Общие вопросы Delphi 3 31.10.2007 21:14
Заполнение динамического списка из файла KORT Помощь студентам 2 01.05.2007 22:28
Загрузка файла AVer Работа с сетью в Delphi 0 11.02.2007 17:22