huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


函数:

// 从命令中分离参数
// cmd 原命令
// chCmdsArray_out 输出参数列表
// nArgsNum_out 输出参数数量
void GetArguments(const char* cmd, char*** chCmdsArray_out, int* nArgsNum_out)
{
    // 参数数量
    int nArgsNum = 1;
    for (int i = 0; i < (int)strlen(cmd); i++)
        if (cmd[i] == ' ')
            nArgsNum++;
    
    int nMaxCmdSize = strlen(cmd) + 1;
    char** chCmdsArray = new char* [nArgsNum];
    for (int i = 0; i < nArgsNum; i++)
    {
        chCmdsArray[i] = new char[nMaxCmdSize];
        memset(chCmdsArray[i], 0, nMaxCmdSize);
    }

    // 分离每个参数
    for (int nIndex = 0, nMainIndex = 0, nArgNum = 0; nIndex < (int)strlen(cmd); nIndex++, nMainIndex++)
    {
        if (cmd[nMainIndex] == ' ')
        {
            nIndex = -1;
            nArgNum++;
            continue;
        }

        chCmdsArray[nArgNum][nIndex] = cmd[nMainIndex];
    }

    *chCmdsArray_out = chCmdsArray;
    *nArgsNum_out = nArgsNum;
}



用法:

    char** args;
    int num;
    GetArguments("print cc dd ea.", &args, &num);



效果:

图片.png



返回首页


Copyright (C) 2018-2022 huidong