c - getopt 值保持为空

标签 c getopt

我正在传递我的程序输入,我可以在 argv 中看到它们,但 getopt 似乎没有我期望的参数。

这是我运行程序的方式:./my_prog -X -f 文件名

<snip>
while ((opt = getopt(argc, argv, "Xf:eE:dD")) != EOF) {
    switch (opt) {
       case 'X':
       case 'f':
                if (optarg == NULL)
                fput("no point of living", fp);         << for debugging

</snip>

我总是将 optarg 设为 null。为什么?

最佳答案

您的参数字符串在 X 之后没有 :(例如 X:f),因此 optarg 将始终为 null。

我还要指出,通常在 switch 语句中你会希望在每个 case 之后有一个 break(通常,不总是,但通常在解析参数时),所以:

switch ( ... ) {
    case 'X': {
        // do something
    } break;

    case 'f': {
        // do something else
    } break;
}

关于c - getopt 值保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6450152/

相关文章:

c - 为什么 gcc 在使用 -std=c99 编译时不提示 htons() 但提示 getaddrinfo()?

c - 使用 gdb 调试我的字符串分词器

c - Pipe() fork() 和 exec

c++ - 如何用Cmake获取libasan.so路径?

ruby - 如何在没有无效选项警告的情况下为 Vagrant 实现自定义选项?

bash - 使用不带参数的 getopts 获取帮助输出

bash - getopt后 'set -- $args'的作用是什么?

python - Python 中带有可选参数的命令行选项

c - 我对 char 指针很好奇

c - C中getopt的错误处理