当前位置: 首页 > news >正文

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

编译测试:

http://www.lryc.cn/news/492079.html

相关文章:

  • 推荐一款龙迅HDMI2.0转LVDS芯片 LT6211UX LT6211UXC
  • libmodbus 源码学习笔记
  • 通用网络安全设备之【防火墙】
  • Vue.js基础——贼简单易懂!!(响应式 ref 和 reactive、v-on、v-show 和 v-if、v-for、v-bind)
  • Mybatis 执行存储过程,获取输出参数的值
  • RAG架构类型
  • Oracle 数据库 IDENTITY 列的性能选项
  • 计算(a+b)/c的值
  • OpenCV从入门到精通实战(八)——基于dlib的人脸关键点定位
  • unity | 动画模块之卡片堆叠切换
  • 前端开发工程师需要学什么?
  • 网络常见命令
  • logminer挖掘日志归档查找问题
  • Flume和kafka的整合:使用Flume将日志数据抽取到Kafka中
  • springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)
  • ScreenshotToCode安装教程
  • 最佳实践:如何在 Vue.js 项目中使用 Jest 进行单元测试
  • MySQL 与 MongoDB 存储差异分析
  • 【2024】前端学习笔记19-ref和reactive使用
  • 2024.11.26总结
  • 《通俗易懂 · JSqlParser 解析和构造SQL》
  • OSPTrack:一个包含多个生态系统中软件包执行时生成的静态和动态特征的标记数据集,用于识别开源软件中的恶意行为。
  • 路由器中继与桥接
  • 香橙派--安装RKMPP、x264、libdrm、FFmpeg(支持rkmpp)以及opencv(支持带rkmpp的ffmpeg)(适用于RK3588平台)
  • 【spark-spring boot】学习笔记
  • 【Python】九大经典排序算法:从入门到精通的详解(冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、计数排序、基数排序、桶排序)
  • 【346】Postgres内核 Startup Process 通过 signal 与 postmaster 交互实现 (5)
  • Jmeter中的测试片段和非测试原件
  • 利用 Jsoup 进行高效 Web 抓取与 HTML 处理
  • 【Java】二叉树:数据海洋中灯塔式结构探秘(上)