一个简单的参数帮助框架,c实现

news2025/1/12 19:03:11

在这里插入图片描述

文章目录


具体实现如下:

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
  
void print_help(char *argv[]) {  
    printf("Usage: %s [options]\n", argv[0]);  
    printf("Options:\n");  
    printf("  -h, --help       Print this help message\n");  
    printf("  -v, --version     Print version information\n");  
    printf("  -a, --arg         Argument option\n");  
    printf("  -b, --flag        Flag option\n");  
}  
  
int main(int argc, char *argv[]) {  
    int opt;  
    int arg_count = 0;  
    int flag_count = 0;  
  
    while ((opt = getopt(argc, argv, "havb:")) != -1) {  
        switch (opt) {  
            case 'h':  
            case '--help':  
                print_help(argv);  
                exit(EXIT_SUCCESS);  
            case 'v':  
            case '--version':  
                printf("Version: %s\n", VERSION);  
                exit(EXIT_SUCCESS);  
            case 'a':  
            case '--arg':  
                arg_count++;  
                printf("Argument option %d: %s\n", arg_count, optarg);  
                break;  
            case 'b':  
            case '--flag':  
                flag_count++;  
                printf("Flag option %d: %s\n", flag_count, optarg);  
                break;  
            default:  
                printf("Error: Invalid option %c\n", opt);  
                print_help(argv);  
                exit(EXIT_FAILURE);  
        }  
    }  
  
    return 0;  
}

在这个示例中,我们使用了 getopt() 函数来解析命令行参数。我们定义了四个选项:-h/–help、-v/–version、-a/–arg 和 -b/–flag。当用户输入 -h 或 --help 时,程序会打印出帮助信息并退出。当用户输入 -v 或 --version 时,程序会打印出版本信息并退出。当用户输入 -a 或 --arg 时,程序会将其视为一个参数选项,并将其打印出来。当用户输入 -b 或 --flag 时,程序会将其视为一个标志选项,并将其打印出来。如果用户输入了无效的选项,程序会打印出错误信息并退出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1274620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用SLS日志服务采集Kong网关的日志

一、阿里云SLS 官方的接入文档已比较丰富了&#xff0c;本文不意重复说明此事。 站在使用的角度&#xff0c;以采集Kong的日志为示例&#xff0c;说明我们应该如何治理日志。 说白了&#xff0c;本文是想给你怎么省钱作一个建议&#xff0c;希望不会让你公司也“降本增笑”。…

1-cuda与gpu编程

文章目录 CUDA与GPU编程1. 并行处理与GPU体系架构1.1 并行处理简介1.1.1 串行处理与并行处理的区别1.1.2 并行处理的概念1.1.3 常见的并行处理 1.2 GPU并行处 理1.2.1 GPU与CPU并行处理的异同1.2.2 CPU的优化方式1.2.3 GPU的特点 1.3 环境搭建1.4 环境变量配置 参考环境搭建设置…

用HeidiSQL在MySQL中创建新的数据库

用有权限的用户登录&#xff1a; 右键单击&#xff0c;选择&#xff1a; 输入要创建的数据库名称&#xff0c;然后点击“确定”&#xff1a; 刷新下&#xff0c;就看到新创建的数据库了&#xff1a; 在新创建的数据库中&#xff0c;就可以做其它操作了&#xff0c;例如…

三、使用CRT连接三台虚拟机

目录 1、建立连接 2、参数配置 3、设置主题,颜色和仿真 1、建立连接

厉害了!!FastReport 全系.NET控件升级v2024,已覆盖支持全新.NET 8 框架 ~

FastReport 作为一款国际知名的报表开发控件&#xff0c;其跨平台的多语言脚本引擎FastScript&#xff0c;桌面OLAP FastCube&#xff0c;被世界各地的开发者所认可。 此次FastReport旗下.NET全系更新至v2024新版&#xff0c;在此版本中&#xff0c;上线了许多开发者关注的功能…

SpringSecurity的默认登录页的使用

SpringSecurity的默认登录页的使用 01 前期准备 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mysql驱动--><dependency><grou…

鸿蒙(HarmonyOS)HelloWo入门

1.HarmonyOS简单介绍 1. HarmonyOS特征&#xff1a;一开发发&#xff0c;多端部署&#xff0c;可分可合&#xff0c;自由流转2. HarmonyOS使用的语言&#xff1a;是ArkTs,ArkTs是在TypeScript(简称TS)基础上扩展的&#xff0c;而TS又是在JavaScript(简称JS)的超集、UI框架ArkUI…

看Spring源码不得不会的@Enable模块驱动实现原理讲解

这篇文章我想和你聊一聊 spring的Enable模块驱动的实现原理。 在我们平时使用spring的过程中&#xff0c;如果想要加个定时任务的功能&#xff0c;那么就需要加注解EnableScheduling&#xff0c;如果想使用异步的功能&#xff0c;那就要加EnableScheduling注解&#xff0c;其实…

windows系统可以正常打开蓝牙,但是不能扫描到可连接的设备,蓝牙异常

项目场景&#xff1a; windows系统可以正常打开蓝牙&#xff0c;但是不能扫描到可连接的设备 问题描述 windows系统可以正常打开蓝牙&#xff0c;但是不能扫描到可连接的设备&#xff0c;在尝试卸载重装蓝牙驱动后依然不可以使用 原因分析&#xff1a; 驱动程序问题&#xf…

【23真题】耗时一周还原,终于有真题啦!

今天分享的是23年上海电力850的信号与系统回忆版试题及解析。上电的真题资源极其稀少&#xff0c;去年我找了3份&#xff0c;全部为假&#xff01;好在今年有刚刚上岸的同学全力协助&#xff0c;为大家弄出一份回忆版真题&#xff0c;希望对大家有帮助&#xff01; 小马哥Tips…

Springboot+vue的疗养院管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的疗养院管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的疗养院管理系统&#xff0c;采用M&#xff08;mod…

class dump使用方式和原理

一、安装 官网下载安装包完成后&#xff0c;将class-dump复制到usr/bin文件夹下 如果这个时候没有发现usr文件夹 说明其隐藏起来了 去查询mac系统下怎么显示隐藏文件 发现mac os 10.11不让复制 没有这个权限 解决办法如下&#xff1a; 重启电脑&#xff0c;按住 command …

机器人仿真系统调研

仿真是机器人学习和研究过程中最重要的工具之一&#xff0c;是指通过计算机对实际的物理系统进行模拟的技术。机器人仿真基于交互式计算机图形技术和机器人学理论&#xff0c;生成机器人的几何图形&#xff0c;并对其进行三维显示&#xff0c;用来描述机器人及工作环境的动态变…

FineReport帆软报表的表格动态列的实现

关于帆软 帆软报表&#xff08;FineReport&#xff09;是一款企业级的数据报表工具&#xff0c;旨在帮助用户快速创建、设计和生成各种类型的报表。它提供了丰富的报表设计功能和灵活的数据展示方式&#xff0c;适用于各种行业和业务需求 以下是帆软报表的一些主要特点和功能…

【赠书第10期】从概念到现实:ChatGPT和Midjourney的设计之旅

文章目录 前言 1 ChatGPT的崛起 2 Midjourney的探索 3 技术创新的交汇 4 对未来的影响 5 结论 6 推荐图书 7 粉丝福利 前言 在过去的几年里&#xff0c;自然语言处理和聊天模型的领域取得了飞速的发展。ChatGPT 作为一个由OpenAI 开发的大型语言模型&#xff0c;以其强…

C++解析xml示例

C解析xml示例 1. Xml文档介绍1.1 特点及作用1.2 Xml优点1.2.1 良好的可拓展性1.2.2 内容与形式分离 1.3 Xml组成1.3.1 Xml声明1.3.2 根元素1.3.3 元素1.3.4 属性1.3.5 实体1.3.6 注释 2 C解析Xml2.1 tinyXml2类库2.2 关键接口2.2.1 LoadFile2.2.2 RootElement2.2.3 FirstChildE…

重要通知丨JumpServer开源堡垒机V2社区版即将停止维护的通知

尊敬的JumpServer开源堡垒机用户&#xff1a;您好&#xff01; 如《关于JumpServer开源堡垒机V2版本产品生命周期的相关说明》所示&#xff0c;JumpServer开源堡垒机V2版本&#xff08;社区版&#xff09;将于2023年12月31日停止维护支持。 在过去两年多的时间里&#xff0c;…

第十一章 Shell编程

第十一章 Shell编程 ​ Shell程序是通过文本编辑程序把一系列Linux命令放在一个文件中执行的实用程序。执行Shell程序时&#xff0c;文件中的Linux命令会被一条接一条地边解释边执行。因此&#xff0c;当用户需要通过多个Linux命令地执行才能完成最后地操作时&#xff0c;可以…

【Docker】Swarm的ingress网络

Docker Swarm Ingress网络是Docker集群中的一种网络模式&#xff0c;它允许在Swarm集群中运行的服务通过一个公共的入口点进行访问。Ingress网络将外部流量路由到Swarm集群中的适当服务&#xff0c;并提供负载均衡和服务发现功能。 在Docker Swarm中&#xff0c;Ingress网络使…

Spring简单的存储和读取

前言 前面讲了spring的创建&#xff0c;现在说说关于Bean和五大类注解 一、Bean是什么&#xff1f; 在 Java 语⾔中对象也叫做 Bean&#xff0c;所以后⾯咱们再遇到对象就以 Bean 著称。这篇文章还是以spring创建为主。 二、存储对象 2.1 俩种存储方式 需要在 spring-conf…