`
verge
  • 浏览: 13327 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用系统调用getopt简化对命令行参数的解析

阅读更多
有关系统调用getopt:
声明:
       
cpp 代码
 
  1. #include  
  2.         int getopt(int argc, char *const argv[], const char *optstring);  
  3.   
  4.         extern char *optarg;  
  5.         extern int optind, opterr, optopt;  
<unistd.h>

使用方法:在while循环中反复调用,直到它返回-1。每当找到一个有效的选项字母,它就返回这个字母。如果选项有参数,就设置optarg指向这个参数。
当程序运行时,getopt()函数会设置控制错误处理的几个变量:
char *optarg ──如果选项接受参数的话,那么optarg就是选项参数。
int optind──argv的当前索引,当while循环结束的时候,剩下的操作数在argv[optind]到argv[argc-1]中能找到。
int opterr──当这个变量非零(默认非零)的时候,getopt()函数为"无效选项”和“缺少选项参数”这两种错误情况输出它自己的错误消息。可以在调用getopt()之前设置opterr为0,强制getopt()在发现错误时不输出任何消息。
int optopt──当发现无效选项的进修,getopt()函数或者返回'?'字符,或者返回字符':'字符,并且optopt包含了所发现的无效选项字符。

例子:
cpp 代码
 
  1. /* getopttest.c ── 练习系统调用getopt()的用法,为实现shell内置命令getopts和各个命令的命令行参数解析做准备 */  
  2. #include  
  3. #include  
  4. // 程序接受两个参数:-a -b ,其中-b选项必需带一个参数(整数)  
  5. int main(int argc, char *argv[])  
  6. {  
  7.         int oc;  
  8.         char * b_opt_arg;  
  9.   
  10.         while((oc = getopt(argc, argv, "ab:")) != -1)  
  11.         {  
  12.                 switch(oc)  
  13.                 {  
  14.                 case 'a':  
  15.                         printf("have option -a\n");  
  16.                         break;  
  17.                 case 'b':  
  18.                         b_opt_arg = optarg;  
  19.                         int count = atoi(b_opt_arg);  
  20.                         // 输出count个have option b, arg is `count`  
  21.                         int i = 0;  
  22.                         for (i = 0; i < count; i++)  
  23.                                 printf("have option -b, arg is %s\n", b_opt_arg);;  
  24.                         break;  
  25.                 case ':':  
  26.                         // 缺少选项参数  
  27.                         fprintf(stderr, "%s: option '-%c' is invalid: ignored\n", argv[0], optopt);  
  28.                         break;  
  29.                 case '?':  
  30.                 default:  
  31.                         // 无效选项  
  32.                         fprintf(stderr, "%s: option '-%c' is invalid: ignored\n", argv[0], optopt);  
  33.                         break;  
  34.                 }  
  35.         }  
  36. }  
<stdio.h><unistd.h>
编译、运行 :

[ 本帖最后由 verge 于 2006-5-14 11:57 PM 编辑 ]

图片附件: getopt.jpg (16.1 K)

 

</unistd.h></stdio.h></unistd.h>

 

分享到:
评论

相关推荐

    getopt多参数解析函数具体分析命令行参数解析

    `getopt()`函数是C语言中用于解析命令行参数的标准函数,主要应用于Unix/Linux系统,也可以在其他支持C语言的环境中使用。它简化了对带有选项和参数的命令行输入的处理,使得程序能够优雅地解析和理解用户提供的...

    getopt.h getopt.c getopt getopt_long 字符串 命令行

    在C语言编程中,`getopt.h` 和 `getopt.c` 是两个非常重要的文件,它们主要用于处理命令行参数。`getopt` 是一个库函数...这两个文件的使用涉及到了命令行参数解析、字符串处理以及程序控制等多个C语言编程的重要概念。

    python 命令行参数

    一旦定义了所有命令行参数,可以通过调用`parse_args()`方法来解析命令行: ```python (options, args) = parser.parse_args() ``` 这里,`parse_args()`方法返回一个元组,第一个元素`options`是一个`Values`对象...

    易语言取命令行结果解析模块源码-易语言

    这个模块可能是开发者为了简化命令行参数处理而编写的,通过调用其中的函数,用户可以方便地获取和解析命令行传入的参数。 命令行参数通常分为两种类型:位置参数和选项参数。位置参数是按照顺序传递的参数,而选项...

    linux中getopt的用法

    综上所述,`getopt`为Linux程序提供了强大的命令行参数解析能力,通过灵活配置`optstring`和合理利用外部变量,开发者能够构建出既健壮又用户友好的命令行界面。掌握`getopt`的高级用法,对于提升程序质量和用户体验...

    getopt函数详解

    在深入探讨`getopt`函数之前,我们先来理解一下`getopt`在Linux环境下的重要性和作用。`getopt`是Linux系统中用于解析...通过合理利用`getopt`,可以极大地简化命令行参数的解析过程,提高程序的健壮性和可维护性。

    getopt的用法

    `getopt`是一个标准C库函数,用于解析命令行参数,尤其在编写需要处理命令行选项的程序时非常有用。它能帮助你避免手动检查`argv`数组来处理各种选项和参数。`getopt`函数定义在`unistd.h`头文件中。 函数`int ...

    Python-Python实现的Google命令行标志模块

    `getopt()`是Python内建的命令行选项解析函数,而`argparse`则是一个更为现代且功能全面的命令行参数解析库。然而,GFlags提供了更多的高级特性,如类型检查、默认值、多值选项、以及更灵活的标志定义方式。 描述中...

    howto-argparse.pdf

    Argparse是Python标准库中的一个用于命令行参数解析的模块,旨在简化创建命令行接口的过程。由于给出的文档信息不完整,仅能根据提供的内容描述部分知识点。 知识点一:Argparse模块介绍 Argparse是Python的一个...

    getopt.lua:Lua 5.1 及更高版本的简单但强大的参数解析器

    `getopt.lua` 是一个专为 Lua 5.1 及更高版本设计的参数解析库,它使得在 Lua 脚本中处理命令行参数变得简单而高效。这个库是基于 `getopt` 这个概念,`getopt` 在许多编程语言中都有实现,用于解析命令行选项和参数...

    pure-getopt:在纯Bash中实现的GNU getopt的直接替代

    纯Bash实现的GNU getopt是Linux和Unix系统中命令行参数解析的一种解决方案。在Linux环境中,getopt函数通常用于解析命令行选项,它遵循POSIX标准,并在C语言中实现。然而,`pure-getopt`项目提供了一个完全用Bash...

    arg_parser 源码

    `arg_parser`是一个用于...总结,`arg_parser`是一个强大的命令行参数解析库,它的C++和C语言接口使得它能在各种环境中使用。通过深入理解其源码,开发者可以更好地定制和优化参数解析过程,提高代码效率和用户体验。

    crystal-getopt:从python移植getopt函数

    3. 解析参数:调用getopt方法,传入命令行参数数组,它会返回一个包含解析结果的元组。 4. 处理结果:检查解析后的结果,根据需要绑定到相应的变量或执行相应的操作。 5. 错误处理:捕获可能抛出的异常,以处理...

    gflags-2.2.2.zip

    gflags是Google开发的一款强大的命令行参数处理库,它用C++编写,并提供了Python接口,使得开发者能够方便地在命令行程序中添加、管理和解析复杂的参数选项。gflags的出现,部分取代了传统Unix系统中的getopt函数,...

    在main函数传值调用

    这些库可以简化参数解析的过程,提供更友好的用户界面和错误处理。 6. **跨平台考虑** 虽然`argc`和`argv`在大多数支持命令行的系统上都可用,但不同的操作系统可能有不同的命令行规则和限制。例如,Windows和...

    Windows平台下gflags库(已编译好的)

    总结来说,这个已编译好的`gflags`库对于Windows上的C++开发者来说是一个实用工具,它可以简化命令行参数处理,提高代码的可读性和可维护性。通过合理地利用`gflags`,开发者可以快速地实现对程序的灵活配置,提高...

    Python中的getopt函数使用详解

    在这个例子中,`ParseOptions`函数首先尝试调用`getopt.getopt()`方法来解析命令行参数。如果解析过程中出现错误,如指定的选项不存在或选项的格式不正确,将会捕获`GetoptError`异常并给出相应的错误提示。 解析...

    c++实现通用参数解析类示例

    这个示例展示了如何使用C++编写一个通用的参数解析类,简化参数处理的过程。 首先,我们看`main.cpp`中的代码。这里创建了一个名为`ParsingArgs`的类,它负责解析命令行参数。在`main`函数中,首先遍历argc和argv,...

    qcommandline:Qt的命令行解析器

    总结来说,`QCommandLine`是Qt提供的一种强大且易于使用的命令行参数解析工具,它极大地简化了C++应用程序处理命令行输入的工作。通过熟悉并掌握其用法,开发者可以创建出更加灵活且用户友好的命令行工具。

    C++可复用代码——命令行控制模块

    6. **命令行参数处理**:处理命令行参数是另一个重要环节,可能涉及到解析选项、开关等。C++库如`boost.program_options`或`getopt`可以简化这部分工作。 7. **错误处理和日志记录**:良好的错误处理机制可以确保...

Global site tag (gtag.js) - Google Analytics