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 ) ;
}

编译测试:

相关推荐
jokerest12314 分钟前
pwn——test_your_nc1——测试
开发语言·php
碧海蓝天202226 分钟前
接上一主题,C++14中如何设计类似于std::any,使集合在C++中与Python一样支持任意数据?
开发语言·c++·python
醉颜凉31 分钟前
计算(a+b)/c的值
java·c语言·数据结构·c++·算法
周杰伦fans33 分钟前
Java与C#
java·开发语言·c#
SAP学习成长之路1 小时前
SAP 零售方案 CAR 系统的介绍与研究
大数据·开发语言·sap·abap·零售·car·bapi
A_Tai23333331 小时前
MyBatis高级扩展
java·开发语言·mybatis
liyinuo20171 小时前
如何使用GCC手动编译stm32程序
c语言·arm开发·stm32·单片机·嵌入式硬件
夏子曦1 小时前
java虚拟机——频繁发生Full GC的原因有哪些?如何避免发生Full GC
java·开发语言
Thomas_YXQ1 小时前
Unity3D Lua如何支持面向对象详解
开发语言·游戏·junit·性能优化·lua·unity3d
MYBOYER1 小时前
Kotlin DSL Gradle 指南
android·开发语言·kotlin