鱼C论坛

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

[已解决]删除信息函数

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

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

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

x
请简要解释这段代码,并说明用哪些函数实现的,函数的输入和输出是什么
void  DeletePlayer(Player players[], int* num_players)
{
        char id[20], name[50];
        printf("请输入要删除的棋手的编号与姓名:");
        scanf("%s%s", id, name);
        
        int index = -2, i = 0;
        char answer;
        for(i = 0; i < *num_players; i++)
        {
                if(strcmp(players[i].id, id) == 0 && strcmp(players[i].name, name) == 0)
                {
                        index = i;
                        break;
                }
        }
                if(index == -2)
                {
                        printf("无该棋手信息\n") ;
                }
                else
                {
                        printf("完整信息:%20s\t%21s\t%10s\t%12s\t%18s\n",
                                         players[index].id, players[index].name, players[index].identity, players[index].rank, players[index].score);
                        printf("是否删除该数据y/n?:");
                        getchar();
                        scanf("%c", &answer) ;
                        if(answer == 'y')
                        {
                                for(i = index; i < (*num_players - 1); i++)
                                {
                                        players[i] = players[i + 1];
                                }
                                (*num_players)--;
                                printf("删除成功!\n");
                                SavePlayer(players, *num_players);
                                printf("本地文件更新成功\n");
                        }
                        
                }
        }
                
最佳答案
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-11-23 03:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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