小羊爱吃小草 发表于 2023-12-21 09:06:55

正则


【求助帖】请及时确认最佳答案,下次提问时可以得到更多关注,问题可以更快解决
void AddPlayer(Player players[], int* num_players)
{
      if(*num_players > MAX_PLAYERS)
      {
                printf("棋手信息数量已达最大,无法继续添加!\n");
                return;
      }
      printf("请输入棋手的ID(大写英文字母 P 加 3 位正整数):");
      scanf("%s", players[*num_players].id);
      printf("请输入棋手姓名:");
      scanf("%s", players[*num_players].name);
      printf("请输入棋手身份:");
      scanf("%s", players[*num_players].identity);
      printf("请输入棋手段位:");
      scanf("%s", players[*num_players].rank);
      printf("请输入棋手等级分:");
      scanf("%s", players[*num_players].score);
                        
      (*num_players)++;
                        
      printf("棋手信息添加成功!\n");
                SavePlayer(players, *num_players);
                              printf("本地文件更新成功\n");
}



修改这段C语言代码,使得当用户输入形式不符合要求的ID时给出提示,不用正则表达式

FishC 发表于 2023-12-21 09:07:03

要实现当用户输入形式不符合要求的ID时给出提示,可以使用字符串操作函数来检查ID的格式是否符合要求。以下是修改后的代码:

void AddPlayer(Player players, int* num_players)
{
    if(*num_players > MAX_PLAYERS)
    {
      printf("棋手信息数量已达最大,无法继续添加!\n");
      return;
    }
   
    char id; // 用来接收用户输入的ID
    printf("请输入棋手的ID(大写英文字母 P 加 3 位正整数):");
    scanf("%s", id);
   
    // 检查ID的格式是否符合要求
    if(strlen(id) != 4 || id != 'P' || !isdigit(id) || !isdigit(id) || !isdigit(id))
    {
      printf("ID格式不符合要求!请重新输入。\n");
      return;
    }
   
    // 如果ID格式符合要求,则将其复制到players结构体中
    strcpy(players.id, id);
   
    printf("请输入棋手姓名:");
    scanf("%s", players.name);
    printf("请输入棋手身份:");
    scanf("%s", players.identity);
    printf("请输入棋手段位:");
    scanf("%s", players.rank);
    printf("请输入棋手等级分:");
    scanf("%s", players.score);
   
    (*num_players)++;
   
    printf("棋手信息添加成功!\n");
    SavePlayer(players, *num_players);
    printf("本地文件更新成功\n");
}

在新增棋手时,首先创建一个临时的字符串变量`id`来接收用户输入的ID。然后通过字符串操作函数`strlen`检查ID的长度是否为4,以及通过逐个字符比较来判断ID的格式是否符合要求。如果不符合要求,则给出提示并返回,不继续执行后续代码。如果ID格式符合要求,则将其复制到`players`结构体的`id`字段中,然后继续执行后续的输入和保存操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 正则