IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> getopt_long多参输入参考例程 -> 正文阅读

[C++知识库]getopt_long多参输入参考例程

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <getopt.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/time.h>
#include <stdint.h>
#include <stdbool.h>

enum {
	TEST_OPT = 3,
	BUFF,
}TEST;

//数字后面带:表示需要输入输数 如-a 1,不带:表示不用带参入如 -h
static const char short_option[] = "ha:s:";
static const struct option long_option[] = {
	{"help", no_argument, 0, 'h' },
	{"test", required_argument, 0, TEST_OPT },
	{"phy_addr", required_argument, 0, 'a'},
	{"str", required_argument, 0, 's'},
	{NULL, 0, NULL, 0},
};

static void usage(const char *argv0)
{
    fprintf(stderr, "Usage: %s [options] ...\n", argv0);
    fprintf(stderr, "Available options are\n");
	fprintf(stderr, " -a        <addr>      Set physical address start \n");
	fprintf(stderr, " -s        <size>      Set str \n");
	fprintf(stderr, " --test    test str            \n");
}

int  phy_addr = 0;
char str[20] = {0};
char test[20] = {0};
static int cmd_parser(int argc, char *argv[], const char *so, const struct option *lo) {
    int c = 'h';
    int long_index = 0;
    while ((c = getopt_long(argc, argv, so, lo, NULL)) != -1) {
        long_index++;
        switch (c) {
            case 'h' :
                usage(argv[0]);
                return 0;
            case 'a' :
                phy_addr = (strtoul(optarg, NULL, 0));
				printf("1optind:%d \n", optind);
                break;
	    	case 's' :
                memcpy(str, optarg, strlen(optarg));
				printf("2optind:%d \n", optind);
                break;
			case TEST_OPT:
				memcpy(test, optarg, strlen(optarg));
				printf("3optind:%d argc:%d,str:%s , %s \n", optind, argc,argv[--optind],argv[optind]);
				
				break;
            case '?' :
            default :
				printf("input parameter error\n");
                usage(argv[0]);
                return 0;
        }
    }

    if (long_index == 0) usage(argv[0]);

    printf("input addr:%d, str:%s, test:%s \n",phy_addr, str, test );
    return long_index;
}

int main(int argc, char *argv[]) 
{
    int ret = -1;
    if (cmd_parser(argc, argv, short_option, long_option) == 0) return 0;
}

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:30:43  更:2022-04-30 08:31:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 23:37:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码