鱼C论坛

 找回密码
 立即注册
查看: 498|回复: 1

[已解决]删除信息函数

[复制链接]
发表于 2023-12-22 18:06:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请简要解释这段代码,并说明用哪些函数实现的,函数的输入和输出是什么
  1. void  DeletePlayer(Player players[], int* num_players)
  2. {
  3.         char id[20], name[50];
  4.         printf("请输入要删除的棋手的编号与姓名:");
  5.         scanf("%s%s", id, name);
  6.        
  7.         int index = -2, i = 0;
  8.         char answer;
  9.         for(i = 0; i < *num_players; i++)
  10.         {
  11.                 if(strcmp(players[i].id, id) == 0 && strcmp(players[i].name, name) == 0)
  12.                 {
  13.                         index = i;
  14.                         break;
  15.                 }
  16.         }
  17.                 if(index == -2)
  18.                 {
  19.                         printf("无该棋手信息\n") ;
  20.                 }
  21.                 else
  22.                 {
  23.                         printf("完整信息:%20s\t%21s\t%10s\t%12s\t%18s\n",
  24.                                          players[index].id, players[index].name, players[index].identity, players[index].rank, players[index].score);
  25.                         printf("是否删除该数据y/n?:");
  26.                         getchar();
  27.                         scanf("%c", &answer) ;
  28.                         if(answer == 'y')
  29.                         {
  30.                                 for(i = index; i < (*num_players - 1); i++)
  31.                                 {
  32.                                         players[i] = players[i + 1];
  33.                                 }
  34.                                 (*num_players)--;
  35.                                 printf("删除成功!\n");
  36.                                 SavePlayer(players, *num_players);
  37.                                 printf("本地文件更新成功\n");
  38.                         }
  39.                        
  40.                 }
  41.         }
  42.                
复制代码
最佳答案
2023-12-22 18:06:32
这段代码是一个删除信息的函数,功能是根据输入的编号和姓名删除对应的棋手信息。代码使用了以下函数:

1. `printf()`:用于打印输出提示信息和结果。
2. `scanf()`:用于接收用户输入的编号和姓名。
3. `strcmp()`:用于比较两个字符串是否相等。
4. `getchar()`:用于接收输入缓冲区中的回车字符。
5. `SavePlayer()`:用于保存修改后的棋手信息到本地文件。

函数的输入有两个:

1. `Player players`:代表存储所有棋手信息的数组。
2. `int* num_players`:代表当前存储的棋手数量。

函数的输出没有。

下面是代码的解释:

1. 首先通过`printf()`函数提示用户输入要删除的棋手的编号和姓名。
2. 然后使用`scanf()`函数接收用户的输入,并将输入的值保存在变量`id`和`name`中。
3. 定义变量`index`和`i`,并通过循环遍历所有棋手数组的元素。
4. 在循环中,使用`strcmp()`函数判断当前遍历到的棋手的编号和姓名是否与用户输入相匹配,如果匹配则将索引赋值给`index`并退出循环。
5. 如果`index`仍然等于初始值-2,则表示没有找到对应的棋手信息,输出提示信息"无该棋手信息"。
6. 否则,输出找到的棋手的完整信息,并提示是否删除该数据。
7. 使用`getchar()`函数清除输入缓冲区中的回车字符。
8. 再次使用`scanf()`函数接收用户的选择,保存在变量`answer`中。
9. 如果用户选择删除(输入'y'),则通过循环将后面的棋手数据向前移动一位,并更新棋手数量。
10. 输出删除成功的提示信息,并调用`SavePlayer()`函数保存修改后的棋手信息到本地文件。
11. 最后输出本地文件更新成功的提示信息。

注意:以上解释中提到的`Player`结构体类型没有给出代码,可能是在其他地方定义的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-22 18:06:32 | 显示全部楼层    本楼为最佳答案   
这段代码是一个删除信息的函数,功能是根据输入的编号和姓名删除对应的棋手信息。代码使用了以下函数:

1. `printf()`:用于打印输出提示信息和结果。
2. `scanf()`:用于接收用户输入的编号和姓名。
3. `strcmp()`:用于比较两个字符串是否相等。
4. `getchar()`:用于接收输入缓冲区中的回车字符。
5. `SavePlayer()`:用于保存修改后的棋手信息到本地文件。

函数的输入有两个:

1. `Player players`:代表存储所有棋手信息的数组。
2. `int* num_players`:代表当前存储的棋手数量。

函数的输出没有。

下面是代码的解释:

1. 首先通过`printf()`函数提示用户输入要删除的棋手的编号和姓名。
2. 然后使用`scanf()`函数接收用户的输入,并将输入的值保存在变量`id`和`name`中。
3. 定义变量`index`和`i`,并通过循环遍历所有棋手数组的元素。
4. 在循环中,使用`strcmp()`函数判断当前遍历到的棋手的编号和姓名是否与用户输入相匹配,如果匹配则将索引赋值给`index`并退出循环。
5. 如果`index`仍然等于初始值-2,则表示没有找到对应的棋手信息,输出提示信息"无该棋手信息"。
6. 否则,输出找到的棋手的完整信息,并提示是否删除该数据。
7. 使用`getchar()`函数清除输入缓冲区中的回车字符。
8. 再次使用`scanf()`函数接收用户的选择,保存在变量`answer`中。
9. 如果用户选择删除(输入'y'),则通过循环将后面的棋手数据向前移动一位,并更新棋手数量。
10. 输出删除成功的提示信息,并调用`SavePlayer()`函数保存修改后的棋手信息到本地文件。
11. 最后输出本地文件更新成功的提示信息。

注意:以上解释中提到的`Player`结构体类型没有给出代码,可能是在其他地方定义的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 05:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表