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

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

在这里插入图片描述

文章目录


具体实现如下:

#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.kler.cn/a/161062.html

相关文章:

  • 【贪心算法】——力扣763. 划分字母区间
  • WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项
  • 【C/C++】CreateThread 与 _beginthreadex, 应该使用哪一个?为什么?
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨
  • 使用Python实现智能食品营养分析的深度学习模型
  • 可编辑PPT | 指挥中心系统建设与应用方案
  • Android 架构实战MVI进阶
  • Vue3的watch函数中,第三个参数配置对象详细分析
  • uniapp横向滚动示例
  • JavaSE语法之五:数组的定义与使用(超详解!!!)
  • Android12之MediaCodec硬编解码调试手段(四十九)
  • python基于ModBusTCP服务端的业务实现特定的client
  • 反钓鱼防盗号,共筑校园安全防线!Coremail出席CERNET学术年会
  • 案例054:基于微信的追星小程序
  • 代码随想录算法训练营第四十二天 _ 动态规划_01背包问题、416.分割等和子集。
  • 医院有HIS系统,为什么还要开发预约挂号小程序?数据如何互通?
  • 前端笔记(三)CSS 盒子模型
  • ★538. 把二叉搜索树转换为累加树
  • PHP使用HTTP代码示例模板
  • gpt3、gpt2与gpt1区别
  • 深入理解 Java 虚拟机(JVM)从入门到精通
  • 使用GPT-4V解决Pycharm设置问题
  • 西工大计算机学院计算机系统基础实验一(函数编写11~14)
  • Java程序员,你掌握了多线程吗?
  • 【运维面试100问】(七)ceph基础题面试
  • 「神印王座」萝莉女神小六打劫,白送10万功勋点,王原原恋人登场