c语言猜数字次数怎么增加,猜数字游戏 求改进 怎么添加排行榜和记录时间

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图 #define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<windows.h>
//游戏规则
//1:电脑随机生成一个1-100之间的数字
//2:玩家进行猜数字 电脑会提示猜大了或者猜小了直到玩家猜对游戏结束
//3:游戏可以重复玩,即玩家玩完一把后可选择再玩一把或者是直接退出
void menu()
{
int input = 0;
printf("欢迎来到猜数字游戏\n");
printf("1:进入游戏\n");

printf("0:退出游戏\n");
printf("\n");

}
void game()
{int counter;
//1:实现1-100之间的随机数的生成
int random_num = rand()%100+1;//rand()是随机数生成函数需要搭配srand((unsigned)time(NULL))使用
//2:进入玩家猜数字环节
counter=0;
while (counter<10)
{
int guess = 0;//guess中储存的是玩家猜测的数字
printf("请输入猜测的数字:");
scanf("%d", &guess);
counter++;
if (guess < random_num)
{printf("猜小了\n");}
else if (guess > random_num)
{printf("猜大了\n");}
else if(guess==random_num)
{
printf("恭喜你猜对了\n");
break;//为了防止死循环,若猜对了应打破循环
}

}

}
typedef struct The_users //typedef 可以定义结构体别名
{
char id[11]; //账号
char pwd[20]; //密码
char name[15];//姓名为字符串
char sex; //性别为单个字符
long phone; //电话号码为长整型
}users;
/创建储存用户账号密码的文件/
void Create_File()
{
FILE *fp;
if ((fp = fopen("users.txt","rb"))==NULL) /如果此文件不存在/
{
if ((fp = fopen("users.txt","wb+"))==NULL)
{
printf("无法建立文件!\n");
exit(0);

    }
}

}
/注册账号/
void registers() //按结构体的大小,一次写入或者读入1个结构体大小
{
users a,b;//结构体 The_users 重命名定义
FILE *fp;
char temp[20];
int count = 0;
printf("欢迎来到注册界面!\n");
Sleep(1000);
fp = fopen("users.txt","r");

     fread(&b, sizeof(struct The_users), 1, fp); //读入一个结构体字符块 到b
      printf("请输入账号\n");
     scanf("%s",&a.id);
     
     
     while (1)
     {    
         if (strcmp(a.id, b.id)) /*如果两串不相等*/
         {
             if (!feof(fp))    /*如果未到文件尾*/                                
                 
                 
             {
                 fread(&b, sizeof(struct The_users), 1, fp);
             }
             else
                 break;
         }
         else

         {   
             printf("此用户名已存在!请重新注册!\n"); 
             Sleep(1000);
             fclose(fp);
             return;      
         }
     }
     printf("请输入姓名:\n");
     scanf("%s",&a.name);
     printf("请输入性别(f(女)/m(男)):\n");
     scanf(" %c",&a.sex);
     do{
         if(a.sex != 'f' && a.sex != 'm'){
             printf("性别输入错误!请重新输入!\n");
            scanf("%c",&a.sex);
         }
     }while(a.sex != 'f' && a.sex != 'm');
     getchar();
     printf("请输入电话号码:\n");
     scanf("%ld",&a.phone);
     printf("请输入密码\n");
     scanf(" %s",&a.pwd);
     printf("请确认密码\n");
     scanf(" %s",&temp);
     do{
         if(!strcmp(a.pwd,temp)){
             fp = fopen("users.txt","a");
             fwrite(&a, sizeof(struct The_users), 1, fp);
             printf("账号注册成功,请登录!\n"); 
             Sleep(500);
             fclose(fp);
             return;
         }else{
             printf("两次密码不匹配!请重新输入!\n");
             scanf("%s",&a.pwd);
             printf("请确认密码\n");
             scanf("%s",&temp);
         }
     }while(1);
 }

/登录系统/
void Input_login()
{
users a,b;//定义结构体The_users别名

FILE *fp;
printf("欢迎来到登录界面!\n");
     Sleep(1000);
fp = fopen("users.txt","r");

fread(&b, sizeof(struct The_users), 1, fp); //读入一个结构体字符块 写入b
printf("请输入账号\n");
scanf("%s",&a.id);   

         while (1)
       {   
           if (strcmp(a.id, b.id)==0)         //如果有此用户名
           {
               break;       
           }
           
           else 
           {
               if (!feof(fp))  //如果文件没有读完                            
            
               {
                   fread(&b, sizeof(struct The_users), 1, fp);
               }
               
               else
               {
                   printf("此用户名不存在,请重新输入!\n");
                   Sleep(500); 
                   fclose(fp);  
                   return;              
               }
           }
   }
   printf("请输入密码\n");
       scanf("%s",&a.pwd); 
do{   
       
    if (strcmp(a.pwd, b.pwd)==0)            /*如果密码匹配*/
           
       {  
          fclose(fp);
          printf("登录成功,欢迎使用!");
          Sleep(500);
          return;
          }
       else  
       {    printf("密码不正确!请重新输入密码\n");
               scanf("%s",&a.pwd);         
       }
}while(strcmp(a.pwd, b.pwd)==0);
   

}
//如果把此函数写在main函数后面,记得在main函数前面某行处,加上函数声明!
void getHighScore(int * highscore)
{
FILE * fp = NULL; //文件指针,指向成功打开的文件

//打开文件,以只读的方式r
fp = fopen("highscore.txt","r");

//如果文件不存在,打开文件,以写入的方式w
if (fp == NULL)
{
    fp = fopen("highscore.txt","w");
    fprintf(fp, "%-10d", *highscore);
}
else
    fscanf(fp, "%10d", highscore);

//关闭文件
fclose(fp);

}
//如果把此函数写在main函数后面,记得在main函数前面某行处,加上函数声明!
void storeHighScore(int highscore)
{
FILE * fp = NULL;

fp = fopen("highscore.txt","w");
fprintf(fp, "%-10d", highscore);
fclose(fp);

}

int main()
{
srand((unsigned)time(NULL));

int input = 0;
do
{
    menu();
    printf("请输入你的选择:");
    scanf("%d",&input);
    if (input == 1)
    {printf("玩家一\n");
        printf(" 注册账号\n");
    Create_File();
    registers();
    printf(" 登录游戏\n");
    Input_login ();
    printf("仅允许猜十次\n");
    game();
    printf("玩家二\n");
        printf(" 注册账号\n");
    Create_File();
    registers();
    printf(" 登录游戏\n");
    Input_login ();
    printf("仅允许猜十次\n");    
    game();}


    else if (input == 0)
    {
        printf("游戏已经退出");
        break;
    }
    else
    {
        printf("您输入的是无效指令,请重新输入\n");
    }

} while (input != 0);

int highscore = 0;  //存储最高分
int score = 0;      //当前次,游戏得分

//获取历史最高分
getHighScore(&highscore);
printf("Original high score: %d\n", highscore);

//假装:游戏中,追踪最高分
printf("->Start game!\n");
score = 99;
if (score > highscore)
    highscore = score;
printf("->SJL, you win!\n");

//存入当前最高分
printf("New high score: %d\n", highscore);
storeHighScore(highscore);

return 0;

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果