C语言解析命令行参数

ops/2024/11/27 13:30:40/

原文地址: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.ppmy.cn/ops/137091.html

相关文章

leetcode hot100【LeetCode 215.数组中的第K个最大元素】java实现

LeetCode 215.数组中的第K个最大元素 题目描述 给定一个整数数组 nums 和一个整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;要求排名是从大到小的&#xff0c;因此第 k 个最大元素是排序后的第 k 个元素。你需要设计一个高效的算法来解决这个问题。…

Java基础.数组排序(冒泡排序和选择排序)数组与遍历

目录 排序 冒泡排序 优化的冒泡排序 选择排序 遍历 一、概念解释 二、目的和意义 数据处理 数据展示 数组基础 数组的定义 如何使用数组 数组初始化 数组长度 案例 案例1&#xff1a;计算班级平均分 案例2&#xff1a;计算班级平均分 案例3&#xff1a;记录运动成…

Redis 可观测最佳实践

Redis 介绍 Redis 是一个开源的高性能键值对&#xff08;key-value&#xff09;数据库。它通常用作数据库、缓存和消息代理。Redis 支持多种类型的数据结构&#xff0c;Redis 通常用于需要快速访问的场景&#xff0c;如会话缓存、全页缓存、排行榜、实时分析等。由于其高性能和…

自由学习记录(25)

只要有修改&#xff0c;子表就不用元表的参数了&#xff0c;用自己的参数&#xff08;只不过和元表里的那个同名&#xff09; 子表用__index“继承”了父表的值&#xff0c;此时子表仍然是空表 一定是创建这样一个同名的变量在原本空空的子表里&#xff0c; 传参要传具体的变…

STM32C011开发(2)----nBOOT_SEL设置

STM32C011开发----2.nBOOT_SEL设置 概述硬件准备视频教学样品申请源码下载参考程序自举模式BOOT0设置配置 nBOOT_SEL生成STM32CUBEMX串口配置LED配置堆栈设置串口重定向主循环演示 概述 STM32CubeProgrammer (STM32CubeProg) 是一款用于编程STM32产品的全功能多操作系统软件工…

mac maven编译出现问题

背景 进行maven install 命令&#xff0c;报错&#xff1a; [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a J…

【leetcode】动态规划

31. 873. 最长的斐波那契子序列的长度 题目&#xff1a; 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n > 3对于所有 i 2 < n&#xff0c;都有 X_i X_{i1} X_{i2} 给定一个严格递增的正整数数组形成序列 arr &#xff0…

Linux下通过DRM操作屏幕,发生行对齐 (stride)问题

前言 Linux下使用LVGL操作屏幕&#xff0c;屏幕尺寸是[280*1424]&#xff0c;不管如何设置LVGL的参数&#xff0c;屏幕的显示均为花屏&#xff0c;能看到有图像显示&#xff0c;但是图像是行错乱的。 ubuntu桌面系统显示正常 打印DRM看输出 drm: 280x1424 (0mm X 0mm) pixel …