这个程序老是出错,谁能帮我改一下啊?  谢谢谢谢谢谢谢!


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<windows.h>
#include<string.h>

#define MAX 6
void read();

typedef struct player
{
char Name[20]; /*玩家姓名 */
int Score; /*玩家成绩,猜测次数 */
} PLAYER;

int qushu()          /*取数函数*/
{
 int a=0; int b=0;
 int i=0;

 srand( (unsigned)time( NULL ) );   /*随机数种子设置 */
 a=rand();
 while (a<999||a>10000)
     a=rand();
 return(a);
}

void  guess()
{   
    void addrec(int a);
    int s[5],dns;  /*存放电脑随机产生的数*/
    int t[5],sc;  /*存放玩家输入的数*/
    int i,j;
    int a,b;              /* a位置和数值都正确的个数 b数值正确位置不正确的个数 */
    int c=0; 
    char xz;
    system("cls");
    dns=qushu();
    printf("电脑数:%d\n",dns);
    s[1]=dns/1000;
    s[2]=dns/100%10;
    s[3]=dns/10%10;
    s[4]=dns%10;

    /* 输入一个随机的四位数 */ 
    /* 猜这个四位数 */
     //printf("\n从0~9中选择4个不重复的数:\n "); 
printf("(你只有10次猜的机会)\n");
while (c<10&&a<4)

    a=0;b=0;
    printf("请玩家输入是一个四位数:\n");
    scanf("%d",&sc);
    while(sc<1000||sc>9999)
    {
        printf("请玩家输入是一个四位数:\n");
        scanf("%d",&sc);
    }
    c++;
    t[1]=sc/1000;
    t[2]=sc/100%10;
    t[3]=sc/10%10;
    t[4]=sc%10;
    for (i=1;i<=4;i++)    /* 比较数组s[]和t[] */ 
    {
        for (j=1;j<=4;j++) 
        {
            if (s[i]==t[j]) 
                if (i==j) 
                    a++; 
                else 
                    b++; 
        }
    }


    printf("位置和数值正确:%d,数值正确位置错误:%d,已猜%d次.\n",a,b,c);
    if (a==4) 
    {
        getchar();
        printf("确认要保存记录请按'y',任意键返回...!\n");
        scanf("%c",&xz);
        if (xz=='y'||xz=='Y') addrec(c); 
    }
}

}
void addrec(int c)              //判断并且增加记录
{
    FILE *fp; 
    char name[10];
    PLAYER pl[7];
    int i,n=1;
    printf("请输入玩家姓:");
    scanf("%s",name);
    strcpy(pl[1].Name,name);
    pl[1].Score=c;
    fp=fopen("E:\\record.txt","r");
    while (!feof(fp))
    {
        n++;
        fscanf(fp,"%s %d",pl[n].Name,&pl[n].Score);
    }
    fclose(fp);




void read()                       //读取记录文件
{
 FILE *fp;
   fp=fopen("E:\\record.txt","rb");
 if(fp==NULL)
 {
  printf("读取失败");
                     //初始化
 }
  else (fread(&pl[i].Name,sizeof(player),MAX,fp))
  { fclose(fp);
      printf("%S\n",PLAYER);
 
  
  }

}

                         
    //写入文件
    fp=fopen("E:\\record.txt","w");
    if (n>5) n=5;
    for (i=1;i<n;i++)
        fprintf(fp,"%s %d\n",pl[i].Name,pl[i].Score);

    fclose(fp);

}


void main()
{   
    int xh;
    while(1)
    {
        system("cls");
        printf("1 猜数\n");
        printf("2 排行榜\n");
        printf("0 退出\n");
        printf("请输入序号:");
        scanf("%d",&xh);
        switch(xh)
        {
        case 1:guess();break;
        case 2:read();break;
        case 0:exit(0);break;
        }
    }  
}