-1

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

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

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

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

我想我正在扫描argc,"-w"和值(即数字)"-s"argv[2]但我不知道我是否正确使用它?

4

2 回答 2

1

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

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

于 2012-12-07T17:25:52.850 回答
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未指定选项”。-w

于 2012-12-07T17:30:51.233 回答