- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 getopt_long 读取命令行选项。代码:
#include <getopt.h>
#include <stdlib.h>
#include <stdio.h>
int
main(int argc, char *argv[])
{
int ch;
struct option longopts[] = {
{"password", required_argument, NULL, 'p'},
{"viewonly", no_argument, NULL, 'v'},
{"help", no_argument, NULL, 'h'},
{NULL, 0, NULL, 0}
};
while ((ch = getopt_long(argc, argv, "p:vh", longopts, NULL)) != -1) {
switch (ch) {
case 'p':
printf("optarg: %x %s\n", optarg, optarg);
break;
case 'v':
printf("viewonly is set\n");
break;
case 'h':
case '?':
default:
fprintf(stderr, "error\n");
exit(EXIT_FAILURE);
}
}
return 0;
}
我使用这个命令行选项:./a.out --password --viewonly
,它应该打印--password
缺少参数的错误消息,但 getopt_long
永远不会返回 '?',而是将 --viewonly
视为 --password
的 optarg
。输出为:
optarg: 24992bc4 --viewonly
我觉得这很奇怪,我应该怎么做才能防止 getopt_long 将选项名称视为参数?
最佳答案
我会在 switch 语句中进行一些错误检查(也许检查密码不能以“--”开头)
关于c++ - getopt_long 将选项名称视为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24379579/
我正在为名为 fp 的命令编写以下代码,该命令存在于一个框架中,用于处理这些已存在的命令。我对 C 相当陌生,我正在尝试使用 getopt_long() 解析此命令的一些参数。目前,参数除了打印参数名
我正在使用 getopt_long 读取命令行选项。代码: #include #include #include int main(int argc, char *argv[]) { i
int next_option; int keep_content =0; int option_index = 0; const string short_options = "c::"; con
我正在编写一些代码来解析命令行输入。我使用getopt_long的方式如下: int c = 0; static struct option long_options[] = { {"mod
我正在使用 getopt 和 getopt_long 来解析 C++ 程序的参数。当正确给出参数时,我没有问题。此外,当给出错误的短参数时,错误消息会正确打印。但是当给出错误的长参数时,我没有收到它的
我有下面的代码。但是当我用 --debug=2 运行它时,调试变量的值为 100。我期望 2...我的错误在哪里?这里的代码: int debug=0; int opt; struct o
int main(int argc , char *argv[]) { int c; int sock; struct sockaddr_in server; char
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: getopt_long() — proper way to use it? 我在 C 程序中遇到 getop
我在解析我正在编写的程序中的参数时遇到问题,代码如下: void parse_args(int argc, char** argv) { char ch; int index = 0;
我是第一次尝试使用 getopt_long() 函数,只是我遇到了不是标志的参数的问题。例如,在我的代码中,当给出一个未知参数时,我想将它用作输入文件。当我只使用一个文件名运行它时,它不会被打印出来,
我正在尝试使用 getopt_long 进行一些基本的选项解析。我的具体问题是当不使用该选项时默认的 int 值被覆盖。我已经通读了文档和一些关于 getopt 的解释,但没有看到任何关于保留默认值/
如果给定一个选项,是否可以告诉 getopt_long 我需要两个参数? 例如,如果 -i 存在,接下来需要两个参数,如果它们不存在,解析将失败。 最佳答案 根据manual和 getopt_long
我一直在阅读如何使用 getopt_long(),以及如何使用 optlong“读取”多字符选项。 我需要从终端解析以下条目: ./bomb –n String –cp Integer –i Inte
我有以下代码 #include #include int main(int argc, char* argv[]){ const struct option longo
当 getopt 或 getopt_long 遇到非法选项时,它将违规选项字符存储在 optopt 中。当非法选项是一个long 选项时,我在哪里可以找到该选项是什么?然后,optopt 中是否存储了
好的,我已经搜索并找到了以下两个 StackOverflow 主题,这些主题让我开始了正确的方向: Argument-parsing helpers for C/UNIX Pass arguments
使用gcc -Wall getopt.c -o options进行编译并运行一些示例后,乍一看似乎可以工作。故意绊倒它会导致段错误。 //straight from the man page stat
这是我的第一个使用 getopt_long() 的程序,所以如果这个问题很琐碎,请原谅我。 当传递给我的程序的第一个参数无效时,我遇到了问题 这是我的主要代码 int main(int argc, c
我正在尝试使用 getopt_long() 创建一个带有可选参数的选项。 这是我的代码: static struct option long_options[] = { {"help", n
我想根据是否存在特定参数来委托(delegate)几个可能的参数列表之一,大致如下: ./test --do-thing-1 --option-A=7 --common-option --option
我是一名优秀的程序员,十分优秀!