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;
}
Собственно вот функция:
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;
}