我正在尝试扫描命令行中的某些字母,符号和值。 我想扫描"-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
选项’区分开来。
以上就是c/c++开发分享我能正确理解getopt()吗?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519251.html