https://github.com/editso/cargparser
c语言命令参数解析器
https://github.com/editso/cargparser
Last synced: 17 days ago
JSON representation
c语言命令参数解析器
- Host: GitHub
- URL: https://github.com/editso/cargparser
- Owner: editso
- Created: 2020-12-01T13:38:45.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-02T00:38:56.000Z (over 5 years ago)
- Last Synced: 2025-02-27T10:59:38.572Z (over 1 year ago)
- Language: C
- Size: 4.88 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 命令参数解析器 - cargparser
简单命令参数解析器, 支持子命令,并且子命令可以继承父命令已有的命令
### 列子
`test/main.c`
```
#include
#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
```