使用getopt_long检测无参数

时间:2015-07-23 22:01:46

标签: c command-line getopt getopt-long

如何使用getopt_long检测用户没有向程序传递任何参数?通过检查argc我可以检测到没有参数调用程序的用户,但用户只用短划线调用我的程序呢?




  $ my_prog  - & #xA;  




我是否需要在我的getopt语句中以某种方式包含此选项?




  while(ca = getopt_long(argc,argv,“abc:D:”,...)
  




函数返回?




2 个答案:

答案 0 :(得分:1)

您可以使用optind变量来确定此类参数:

  

变量optind是argv []的下一个元素的索引   矢量要处理。它应由系统初始化为1,   和getopt()将在它的每个元素完成时更新它   的argv []。

例如,

  for(int i = optind; i < argc; i++)
    printf("Unknown argument: %s\n", argv[i]);

您可以在参数处理后执行此操作,以查明是否存在任何此类意外参数。

答案 1 :(得分:0)

使用&#39; - &#39;开始您的optstring字符。来自man getopt_long

  

如果optstring的第一个字符是&#39; - &#39;,那么每个非选择argv-element的处理方式就好像它是字符代码为1的选项的参数

所以使用optstring&#34; -abc:D:&#34;你可以假设如果你输入了while循环,就会传递一些参数。