我能正确理解getopt()吗?

时间:2012-12-07 17:17:54

标签: c getopt

我正在尝试扫描命令行中的某些字母,符号和值。我想要扫描"-w",一个数字和"-s"。我在上一个问题中得到了回复,我被告知要使用getopt(),经过一段谷歌搜索,我想我可能会得到它,但我不确定。

这就是我认为我正在做的事情:

int c = 0; 
int b = argv[2];

while((c = getopt(argc, argv, "-w", "-s", b))

我想我正在argc "-w""-s"argv[2]值(这是数字)进行扫描{{1}}。但我不知道我是否正确使用它?

2 个答案:

答案 0 :(得分:1)

你的while循环应该是 while ((c = getopt(argc, argv, "w:s:"))

:冒号意味着它需要一个参数。现在将optarg转换为整数或任何你想要的。

答案 1 :(得分:1)

int number = 0;
int sflag = 0;
int opt;

while ((opt = getopt(argc, argv, "w:s")) != -1)
{
    switch (opt)
    {
    case 's':
        sflag = 1;
        break;
    case 'w':
        number = atoi(optarg);
        break;
    default:
        /* Report usage and exit? */
        break;
    }
}

数字的转换是懒惰的;例如,你可以做一个更小心的工作来调用一个调用strtol()的函数。您可能需要使用与wflag变量类似设置的sflag变量,以便区分-w 0和命令行中指定的'no -w选项'。