【发布时间】:2016-06-18 00:50:53
【问题描述】:
我试图在我的代码中使用 C 中的函数 getopt(),但它总是返回 1。
我完全不知道发生了什么。 最后,我将代码缩短为这样的测试:
#include <getopt.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char** argv) {
int ch;
while (ch = getopt(argc, argv, "s:E:") != -1) {
printf(" %d\n", ch);
}
}
然后我用./test -s 0 -E 1 运行它,我得到了两个 1。
我想我应该为 E 或 s 获得至少 69 分?
这是我如何编译、运行它以及如何使用 gdb 将命令行传递给它的屏幕截图。
起初,我使用 'char ch' 而不是 'int ch'。到时候我会从getopt中得到ch = '/001'。
编辑
它现在可以工作了,它需要括号。 谢谢大家!
【问题讨论】:
-
@ColonelThirtyTwo 调用它!我百分百确定。赋值操作的优先级低于关系操作。 C确实有太多的优先级,但它们至少是相当合理的。
-
当一些答案对你有帮助时,accept it。不要修改问题说它已经解决了。除非真的有必要,否则不要在这里使用图像。只需复制文本并粘贴到此处即可
-
欢迎来到 Stack Overflow。请注意,在这里说“谢谢”的首选方式是投票赞成好的问题和有用的答案(一旦你有足够的声誉这样做),并接受对你提出的任何问题最有帮助的答案(这也给出了你的声誉小幅提升)。请参阅About 页面以及How do I ask questions here? 和What do I do when someone answers my question?