我正在尝试扫描命令行中的某些字母,符号和值。我想要扫描"-w"
,一个数字和"-s"
。我在上一个问题中得到了回复,我被告知要使用getopt()
,经过一段谷歌搜索,我想我可能会得到它,但我不确定。
这就是我认为我正在做的事情:
int c = 0;
int b = argv[2];
while((c = getopt(argc, argv, "-w", "-s", b))
我想我正在argc
"-w"
,"-s"
和argv[2]
值(这是数字)进行扫描{{1}}。但我不知道我是否正确使用它?
答案 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
选项'。