我能正确理解getopt()吗?

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

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

 int c = 0; int b = argv[2]; while((c = getopt(argc, argv, "-w", "-s", b)) 

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

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

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

 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选项’区分开来。