【发布时间】:2017-08-22 01:24:57
【问题描述】:
我有一些看起来像这样的东西:
while((ch = getopt(argc, argv, "d:t")) != EOF) { ... }
我可以这样调用函数:
./foo -d "my house" -t some more thoughts
getopt() 不知何故知道 -d 和 -t 是选项,但之后它知道 'some' 'more' 和 'thoughts' 供以后使用。 getopt() 寻找什么来知道它已完成处理 args?什么是 EOF?
【问题讨论】:
-
getopt没有返回EOF。一开始就用错了。 -
大概它会寻找不以
-开头的东西? -
它已经完成了 args 的处理,因为它查看了你告诉它的参数数量 (
argc) 并取出了它关心的参数 (-d <value>和-t) -
您告诉
getopt"d:t"的有效选项是什么。如果您的问题是关于如何编写解析器,那么这个问题就太宽泛了。getopt返回-1,而EOF可以是任何负值(实现定义)。
标签: c command-line command-line-arguments getopt