Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Односвязный список, загрузка из файла (http://forum.oszone.net/showthread.php?t=234201)

luciy93 07-05-2012 15:49 1911964

Односвязный список, загрузка из файла
 
Добрый день. Написал функцию загрузки элементов из файла в односвязный список. Работает если использовать ifstream, при использовании fread выдает ошибку на цикле while(list->next) : Unhandled exception at 0x009024f9 in Class_list_one directional_circle (no).exe: 0xC0000005: Access violation reading location 0x000f4804.

Собственно вот функция:

Код:

void List::Unload() {
        system("cls");
        int count;
        Node* temp1=new Node;

        if (first!=NULL) {
                Node* tmp;
                temp1=first;

                while(temp1) {
                        tmp = temp1;
                        temp1 = temp1->next;
                        free(tmp);
                }
                free(temp1);
                temp1=NULL;
                first=NULL;
        }

        Node* list=new Node;
        list->next=NULL;
        first=list;

        FILE*f;
        f=fopen("list_file.txt","r");
        fread(&count,sizeof(int),1,f);
        fread(&list->key,sizeof(Node),1,f);
        fread(&list->name,sizeof(Node),1,f);
                       
        for (int i=0;i<count-1;i++) {
                list=first;
                while (list->next)
                        list=list->next;

                Node* temp=new Node;
                temp->next=NULL;
                list->next=temp;

                fread(&list->key,sizeof(Node),1,f);
                fread(&list->name,sizeof(Node),1,f);

        }
        fclose(f);
        list=first;
}


pva 08-05-2012 20:23 1912701

не понятно, в чём вопрос, и имхо недостаточно данных (описание Node как минимум).

Serj_Pi 15-05-2012 09:14 1916144

не правильно используешь fread
Код:

fread(&list->key,sizeof(Node),1,f);
нужно sizeof(list->key)


Время: 22:16.

Время: 22:16.
© OSzone.net 2001-