自学内容网 自学内容网

C语言解析命令行参数

原文地址:C语言解析命令行参数 – 无敌牛

欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等

C语言有一个 getopt 函数,可以对命令行进行解析,下面给出一个示例,用的时候可以直接copy过去修改,很方便。

代码:

//  main.c
//  gcc -Wall main.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void usage(char* exec_file) {
    printf("\n");
    printf("Usage:\n");
    printf("\n");
    printf("%s options:\n", exec_file);
    printf(" -C, -c  指定配置文件,否则使用默认配置文件[/xxx/xxxx]\n");
    printf(" -F, -f  强制执行\n");
    printf(" -H, -h  打印此页面\n");
    printf("\n");
}


typedef struct _myargs_t{
    char config_path[1024] ;
    int f_flag ;
} myargs_t ;

int main(int argc, char* argv[]) {
    myargs_t myargs = {
        "/xxx/xxxx",
        0
    } ;
    char opt ;
    while ((opt = getopt(argc, argv, "C:c:FfHh")) != -1) {
        switch (opt) {
            case 'C':
            case 'c':
                printf("get options [%c] arg[%s]\n", opt, optarg) ;
                snprintf(myargs.config_path, sizeof(myargs.config_path), "%s", optarg) ;
                break;
            case 'F':
            case 'f':
                printf("get options [%c]\n", opt) ;
                myargs.f_flag = 1 ;
                break;
            case 'h':
            case 'H':
                usage(argv[0]);
                return 0 ;
            default:
                usage(argv[0]);
                printf("没有此选项[%c], 请重新选择!\n", opt);
                return 0;
        }
    }
    printf("config_path[%s]  f_flag[%d]\n", myargs.config_path, myargs.f_flag ) ;
}

编译测试:


原文地址:https://blog.csdn.net/weixin_42073635/article/details/144066655

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!