本文介绍了为了论证Getopt-传递字符串参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个计划,需要在多个命令行参数,所以我使用getopt的。我的一个参数接受一个字符串作为参数。反正是有通过getopt函数来获取字符串或我将不得不通过的argv []数组获得它?也可以getopt说明读起来像 -file ARGS?我已经看到到现在的所有参数都只有一个字符,如 -a

修改

从下面的答案,我写了一个程序来使用getopt_long(),但是switch语句只承认当我使用的字符参数,而不是长期争论的论点。我不知道为什么这种情况发生。在传递的参数 -mf -file样品我没有看到打印报表。

修改

我试着输入命令参数为 - 文件,然后它的工作。它是不可能有这样做只是 -file

 静态结构选项long_options [] =
{
    {MF,required_argument,NULL,A},
    {MD,required_argument,NULL,B},
    {百万,required_argument,NULL,C},
    {MW,required_argument,NULL,D},
    {LF,required_argument,NULL,'E'},
    {LD,required_argument,NULL,F},
    {LN,required_argument,NULL,'G'},
    {LW,required_argument,NULL,H},
    {RF,required_argument,NULL,'我'},
    {RD,required_argument,NULL,J},
    {RN,required_argument,NULL,'K'},
    {RW,required_argument,NULL,L},
    {DF,required_argument,NULL,M},
    {DD,required_argument,NULL,'N'},
    {DN,required_argument,NULL,'O'},
    {DW,required_argument,NULL,P},
    {文件,required_argument,NULL,Q},
    {NULL,0,NULL,0}
};
INT CH = 0;
而((CH = getopt_long(ARGC,ARGV,abcdefghijklmnopq:long_options,NULL))!= -1)
{
    //检查,看看是否有单个字符或长选项来通过
        开关(CH){
        案一:
            COUT<<称号;
            打破;
        案例'B':            打破;
        情况下C:            打破;
        案D:            打破;
        案例E:            打破;
        案例'F':            打破;
        案例'G':            打破;
        案例'H':            打破;
        案例'我':            打破;
        案例'J':            打破;
        案例'K':            打破;
        案例'L':            打破;
        案件的m:            打破;
        案例'N':            打破;
        案例'O':            打破;
        案例'P':            打破;
        案例'Q':
            COUT<<文件;
            打破;
        案件 '?':
            COUT<<错误消息
            打破;
    }
}


解决方案

男人的getopt

A sample code:

#include <stdio.h>
#include <unistd.h>

int main (int argc, char *argv[])
{
  int opt;
  while ((opt = getopt (argc, argv, "i:o:")) != -1)
  {
    switch (opt)
    {
      case 'i':
                printf ("Input file: \"%s\"\n", optarg);
                break;
      case 'o':
                printf ("Output file: \"%s\"\n", optarg);
                break;
    }
  }
  return 0;
}

Here in the optstring is "i:o:" the colon ':' character after each character in the string tells that those options will require an argument. You can find argument as a string in the optarg global var. See manual for detail and more examples.

For more than one character option switches, see the long options getopt_long. Check the manual for examples.

EDIT in response to the single '-' long options:

From the man pages

Check the manual and try it.

这篇关于为了论证Getopt-传递字符串参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 18:06