1 Star 2 Fork 2

yyy / cargparser

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

命令参数解析器 - cargparser

简单命令参数解析器, 支持子命令,并且子命令可以继承父命令已有的命令

列子

test/main.c

#include <stdio.h>
#include "cargparser.h"


/**解析完成后的回调*/
extern void server_cmd(cargparser_args* args);
extern void client_cmd(cargparser_args* args);

struct option options[] = {
/**      选项参数名             命令            描述信息      是否必须       默认值    */
        {"port",        {"-p", "--port"},       0,           0,        "8080"},
        {"host",        {"-h", "--host"},       0,           0,        "3306"}
};

struct option server_options[] = {
        {"server",      {"-s","--server"} ,    0,            0,          0}
};

struct option client_options[] = {
        {"client",      {"-c","--client"} ,    0,            0,          0}
};


// 子命令
cargparser sub_cmd[] ={
/**       命令             选项          选项数量               子命令    子命令数量      处理命令   */
        {"server", server_options, len(server_options),         0,      0,       server_cmd},
        {"client", client_options, len(client_options),         0,      0,       client_cmd},
};

/**
 * test server|client|stop
 * */
cargparser parser = {"test", options, len(options), sub_cmd, len(sub_cmd)};


int main(int argv, char **args){
    cargparser_args arg;
    parse_main(&parser, &arg, argv, args);
    cargparser_call(&arg);
}

extern void server_cmd(cargparser_args* args){
    char *port = get_argument(args, "port", "9999");
    char *host = get_argument(args, "host", "255.255.255.255");
    char *server = get_argument(args, "server","");
    printf("port: %s\n", port);
    printf("host: %s\n", host);
    printf("server: %s\n", server);
}


extern void client_cmd(cargparser_args* args){
    char *port = get_argument(args, "port", "9999");
    char *host = get_argument(args, "host", "255.255.255.255");
    char *client = get_argument(args, "client","");
    printf("port: %s\n", port);
    printf("host: %s\n", host);
    printf("client: %s\n", client);
}

测试

  • Input:
    ./test server -s 100 --host 0.0.0.0 --port 8080
  • Output:
    port: 8080
    host: 0.0.0.0
    server: 100

空文件

简介

c语言命令参数解析器 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/editso/cargparser.git
git@gitee.com:editso/cargparser.git
editso
cargparser
cargparser
master

搜索帮助