c - 如何在getopt_long中使用no_argument?

标签 c getopt-long

我正在尝试将 getopt_long 用于我的代码。 optional_argument 和 required_argument 选项按预期工作,但 no_Argument 选项工作不正常。这就是我的编码方式。

struct option long_option[] = 
{
  {"auto",required_argument,0,'a'},
  {"help",no_argument,0,'h'},
  {"list",no_argument,0,'l'},
  {0,0,0,0}
};

现在如果我编译并尝试:

./a.out --help 

-->显示所有帮助内容

./a.out --help 1234 

--> 仍然显示所有的帮助内容。它应该提示不需要参数的错误??

最佳答案

不,这不被认为是错误。 getopt_long1234 解释为程序参数。

这个例子更清楚:

rm -r -f dir1/ dir2/

这里的-r-f是选项,dir1/dir2/都是程序参数. 请注意,如果您执行 rm file1.txt -f,它将尝试删除名为“-f”的文件。

关于c - 如何在getopt_long中使用no_argument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128258/

相关文章:

c - 用于在 C 中构造 802.11 帧而无需管理控制字段的 API

c++ - 我们可以在 getopt_long 函数中使用动态数组 data() 作为 longopts 参数吗?

perl - 当参数的值是 0 时,为什么我的 Perl 程序会打印帮助消息?

c - 如何区分Escape和Escape Sequence

c - 在 C 中声明一个包含另一个变量内容的变量名

c - 在哪里可以找到并下载 netdb.h?

python - 从 Python 子进程调用 Perl 脚本中的 GetOptions

c - getopt_long() 没有看到终止符

perl - 在Perl中使用Getopt::Long获取多维数据结构

c - 如何组合c中的字母?