getopt()如何知道何时停止?

时间:2017-08-21 16:57:48

标签: c command-line command-line-arguments getopt

我有一些看起来像这样的东西:

while((ch = getopt(argc, argv, "d:t")) != EOF) { ... }

我可以这样称呼函数:

./foo -d "my house" -t some more thoughts

以某种方式getopt()知道-d和-t是选项,但之后它知道'某些''更多'和'思想'是为了以后。 getopt()寻找什么来知道它已经完成了处理args?什么是EOF?

1 个答案:

答案 0 :(得分:2)

正如评论中所述,将EOFgetopt()一起使用是错误的("发生"在使用-1 EOF的系统上工作)。使用-1

对于您的其他问题:

  

getopt()想知道它已经完成了处理args吗?

答案很简单。 getopt() 要求在其他参数之前使用选项调用您的程序。因此它会在第一次找到时停止

  • NULL(表示argv[]的结尾)或者当达到argc时(取决于具体实施)或
  • 一个不以-开头且您的配置字符串中没有:消耗的参数。