Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 79
Благодарности: 1

Профиль | Отправить PM | Цитировать


hasherfrog
Всё верно. разделители нужны....
Считать данные из файла в двухсвязанный список получилось.
Функция views() отображает на экран данные из памяти.
Функция save() -- записывает в фаил из списка. Перед каждым элементом структуры record, переходим на новую сторку
(т.е.разграничиваем --- fprintf(f,"\n%1d",list->sps.expert).
функия load() -- считывает из файла в список.
Вот код:
Код: Выделить весь код
......

struct expt{int expert;char sport[20];int mesto;};
struct record{expt sps; record *prior;record *next;}*begin,*last,*list;

.......

void views(){
 				clrscr();
   			printf("\n Out spicok bd:\n");
            list=begin;
            while(list){
            printf("expert %d: %s -- mesto %d\n",list->sps.expert,list->sps.sport,list->sps.mesto);
            list=list->next;
            }
            getch();
}
void save(char a[]){
FILE *f;
if((f=fopen(a,"w"))==NULL){printf("File could not be opened\n Press any key...");
getch();return;}else{
   list=begin;
   while(list!=NULL){
   fprintf(f,"\n%1d",list->sps.expert);
   fprintf(f,"%20s\n",list->sps.sport);
   fprintf(f,"%1d",list->sps.mesto);
   list=list->next;
   }
   }
fclose(f);
}
void load(char a[])
{
FILE *f;
if((f=fopen(a,"r+"))==NULL){printf("File could not be opened\n Press any key...");
getch();return;}else{
while(1){if((fgetc(f))==EOF)break;
			else{
	last=(struct record*)malloc(sizeof(struct record));
   if(last==NULL){printf("\n Error !\n No find memory\n Press any key...");getch();return;}
   fscanf(f,"%1d",&last->sps.expert);
   fscanf(f,"%20s",last->sps.sport);
   fscanf(f,"%1d",&last->sps.mesto);
   if(begin==NULL){last->prior=NULL;begin=last;last->next=NULL;}
   else{list=begin;
   					 while(list){
                               	if(list->next==NULL){
                                 last->next=NULL;
                              	last->prior=list;
                              	list->next=last;
                              	break;
                                 }
                                 list=list->next;
                   }
   }
         }

}
}
fclose(f);
}
main()
{

......

}

Отправлено: 12:38, 12-05-2006 | #5