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


 $ my_prog - & #xA;


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


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



 函数返回?

答案 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
循环,就会传递一些参数。