雪傲天1 2023-02-22 09:59 采纳率: 96.2%
浏览 55
已结题

有没有人知道这段代码是什么意思最后能得到啥结果

有没有人知道这段代码是什么意思
最后能得到啥结果


char* ReadRef(const char* ref, const char* cmds)
{
    //cmss:     id:asd pass:123456
    //ref:         id:
    for (int i = 0; cmds[i]; i++)
    {
        if (cmds[i] == ref[0])
        {
            bool bfind = true;
            int x= 0;
            for (x = 0; ref[x]; x++)
            {
                if (ref[x] != cmds[i + x])
                {
                    bfind = false;
                    break;
                }
            }
            if (bfind) return (char*)&cmds[i + x];
        }
    }
    return nullptr;
}

这段代码逻辑我搞不清楚,有没有高人指点一二

----------------------------------------------------------分割线
重新修改了一下问题,逻辑大概搞清楚了,但是if判断里,(ref[x] != cmds[i + x]),为什么cmds里面是i+x,而不是x,另外return cms[i+x],这里为什么是i+x,cmds[i+x]代表单个字符吧,这里应该是返回一串字符才对

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-02-22 10:07
    关注

    这代码应该对命令行输入参数进行匹配检查的,ref字符串是关键字,cmds是某个命令行参数。当命令行参数以ref开头时,就匹配了,然后将关键字后面的字符串返回
    待命中的注释已经提供了帮助信息,比如ref为"id:",输入的命令行为"id:asd",那么就将asd串返回,表示从参数中截取到了id信息
    代码逻辑就是将ref中逐个字符在cmds字符串中从头开始逐个匹配,如果全部匹配,就是true,否则是false

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 修改了问题 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真