鲁棒性
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");
}
基于这段代码,提高代码鲁棒性,修改这段代码,使得当用户输入已有的棋手ID时做出提醒 要提高代码的鲁棒性并实现当用户输入已有的棋手ID时做出提醒,可以对代码进行如下修改:
#include <stdbool.h>// 引入标准布尔类型库
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);
// 检查输入的ID是否已存在
for (int i = 0; i < *num_players; i++)
{
if (strcmp(players.id, players[*num_players].id) == 0)
{
printf("该棋手ID已存在,请重新输入!\n");
return;
}
}
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 - 1], *num_players);// 保存单个棋手信息
printf("本地文件更新成功\n");
}
需要注意的是,这里假设 `Player` 类型是一个结构体,并且在函数外部定义了一个数组 `players[]` 来存储所有棋手信息。另外还引入了标准库 `<stdbool.h>` 中的布尔类型,用于标识是否存在相同的棋手ID。在修改后的代码中,增加了一个循环来检查输入的ID是否已存在,如果存在,则输出提示信息并返回。如果不存在重复的ID,则继续执行后续的输入操作。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]