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

编译测试:

相关推荐
平常心的技术小牛1 小时前
Qt-快速上手-QMenuBar
开发语言·qt
青 春 记 忆1 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
余额瞒着我当琳3 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
坐吃山猪4 小时前
WebClient内存配置解析
开发语言·springboot·webflux
jdksjw4 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Zach_菠萝侠4 小时前
【DeepSeek Harness 研究】进化方向4:安全加固 思考、设计与实现
开发语言·安全·deepseek
SL-staff5 小时前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术
SomeB1oody5 小时前
【RustyML入门】6.0. 数学工具
开发语言·后端·机器学习·rust·教程
进制树6 小时前
【飞控开发实战·⑲】ROS2无人机开发环境搭建:Jazzy安装、工作空间与hello_drone节点实战
开发语言·安全·无人机·课程设计
牛马也想出海6 小时前
亚马逊爬虫代理IP:IP类型选择与配置指南
开发语言·php