Войти

Показать полную графическую версию : Односвязный список, загрузка из файла


luciy93
07-05-2012, 15:49
Добрый день. Написал функцию загрузки элементов из файла в односвязный список. Работает если использовать 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
не понятно, в чём вопрос, и имхо недостаточно данных (описание Node как минимум).

Serj_Pi
15-05-2012, 09:14
не правильно используешь fread
fread(&list->key,sizeof(Node),1,f);
нужно sizeof(list->key)




© OSzone.net 2001-2012