почему не работает все с учебника списал ))) подбельский
-------------------------------------
Код:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct team
{
char name[20];
char city[20];
int count_games;
char L_W_T[10];
int players;
struct team *prior;
struct team *next;
} st[100]; //opredelen massiv structur;
const int M=100;
struct control
{
int nb;
int nf;
struct team *bbeg;
struct team *bend;
struct team *fbeg;
struct team *fend;
} ctrl;
int init (void);
int input(void);
int save (void);
//////////////MAIN//////////////////////////////////
void main(void)
{
char numb[10];
while(1)
{
printf("1 - Add NEW team\n");
printf("2 - Save in file\n");
printf("3 - Init\n");
printf("4 - Exit\n");
scanf("%s",numb);
switch(numb[0])
{
case '1':input(); break;
case '2':save(); break;
case '3':init(); break;
case '4':return;
default: printf("Input only 1-4\n");
}
}
}
////////////////////////////////////////////////////////////////////////////
int init(void)
{
struct team *point=st; //ukazatel na tek element
int i;
ctrl.nb=0; //chislo zanytuch elementov
ctrl.nf=0; //chislo svobodn elementov
ctrl.bbeg=NULL;
ctrl.bend=NULL; //spiska zanyatyuch elementov net
ctrl.fbeg=st; //adres nachala massiva struct
ctrl.fend=st;
point=st;
//printf("\n\n Init\n");
for (i=0;i<M-1;i++)
{
if (ctrl.nf!=0) //ne perv element
{
point->prior=point-1;
point->next=point+1;
}
else //perv element
{
point->prior=NULL;
point->next=point+1;
}
point++;
ctrl.nf++;
ctrl.fend++;
} //conec cikla init (M-1) elementov massiva
//Init poslednego elementa v massive
ctrl.nf++;
point->prior=point-1;
point->next=NULL;
return 0;
}
////////////////////////////////////////////////////////////////////////////
int input(void)
{
struct team *fbeg;
struct team *ptr; //vspomagateln ukazatel
if (ctrl.nf==0) return -1;
ptr=fbeg;
printf("Input the name of team:\n");
scanf("%s",fbeg->name);
printf("Input the city of team:\n");
scanf("%s",ptr->city);
printf("How many games played team?\n");
scanf("%d",&ptr->count_games);
printf("L-W-T\n");
scanf("%s",ptr->L_W_T);
printf("How many players in team?\n");
scanf("%d", &ptr->players);
//Podkluchenie elementa k spisku zanyatuch
if (ctrl.nf==1) //zanimayem poslednee
{
ctrl.fbeg=NULL;
ptr->next=NULL;
ptr->prior=ctrl.bend;
ctrl.bend->next=ptr;
ctrl.bend=ptr;
ctrl.fend=NULL;
}
else
{
if (ctrl.nb==0)
ctrl.bbeg=ptr;
ctrl.fbeg=ptr->next;
ptr->next=NULL;
ptr->prior=ctrl.bend;
ctrl.bend->next=ptr;
ctrl.bend=ptr;
ctrl.fbeg->prior=NULL; //nov pervyu v spiske svobodn elementov
}
ctrl.nb++;
ctrl.nf--;
return 0;
}
////////////////////////////////////////////////////////////////////////////
int save(void)
{
int i,k;
struct team *ptr; //ukazatel na structuru tipa person
char *c; //ukazatel na simvol
int *pti; //ukazatel na celoe
FILE *fp; //ukazatel na potok
if ((fp=fopen("bd.txt","w"))==NULL)
{perror("bd.txt"); return -1;}
if (ctrl.nb==0) return -1;
else
{
ptr=st;
//zapis info
pti=&ctrl.nb; //nachalo bloka upravl info
c=(char *)pti;//nastroika ukazatelya
//cikl vvoda upravl info
for(i=0;i<sizeof(ctrl); i++)
putc(*c++, fp);
//cikl vvoda v fail vsego massiva struct
c=(char *)ptr; //nastroika ukazatelya
for(k=0;k<sizeof(st);k++)
putc(*c++,fp);
fclose(fp);
return 0;
}
}
--------------------------------------------
moderator: Используйте тег <CODE>