- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在C中使用getopt_long遇到了一个问题,如描述的那样,结构如下:
struct option{
const char *name;
int has_arg;
int *flag;
int val;
};
如果设置了 flag,getopt_long 应该返回 0 并将 *flag 设置为 val。但在我的代码中,getopt_long 返回 val 和 *flag 保持不变。代码如下:
#include<stdio.h>
#include<getopt.h>
int help;
int output;
int verbose;
const char *short_option = "ho:v";
const struct option long_options[] = {
{"help", 0, &help, 'h'},
{"output", 1, &output, 'o'},
{"verbose", 0, &verbose, 'v'},
{NULL, 0, NULL, 0}
};
void print_help()
{
printf("in option help: \n");
}
void print_output(char *content)
{
printf("in option output: argument is %s\n",content);
}
void print_verbose()
{
printf("in option verbose\n");
}
void print_args()
{
printf("help is %d\n",help);
printf("output is %d\n",output);
printf("verbose is %c\n",verbose);
}
int main(int argc, char **argv)
{
int next_option;
while( (next_option = getopt_long(argc, argv, short_option, long_options, NULL )) == 0)
{
printf("next_option is %c\n",next_option);
print_args();
}
return 0;
}
有人可以帮忙吗?
最佳答案
如果您检查 manual page ,你会看到:
getopt_long() and getopt_long_only() also return the option character when a short option is recognized. For a long option, they return val if flag is NULL, and 0 otherwise.
因此,如果您在调用程序时使用短选项,它将返回该选项字符。为了让函数按照您的意愿运行,您必须在调用程序时使用 long 参数。
关于c - 当在结构选项中设置标志时,getopt_long 不返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852260/
我正在为名为 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
我是一名优秀的程序员,十分优秀!