C 在执行getOpts时,如何从stdout获取输入

C 在执行getOpts时,如何从stdout获取输入,c,C,以上一切都是合法的。如何找到标准输出 $ gcc -Wall fileAbove.c $ ./a.out -a14 -b hi $ ./a.out -a14 hi $ ./a.out -b hi 例如,我如何知道没有“/a.out-a10-b(此部分)”,如果没有该部分,我们将处理标准输出。原因是if语句: $ echo hello | ./a.out -a14 -b hello $ echo hello | ./a.out -a14 hello 如果只使用arg-a或arg-b(而不是

以上一切都是合法的。如何找到标准输出

$ gcc -Wall fileAbove.c
$ ./a.out -a14 -b hi
$ ./a.out -a14 hi
$ ./a.out -b hi

例如,我如何知道没有“/a.out-a10-b(此部分)”,如果没有该部分,我们将处理标准输出。

原因是if语句:

$ echo hello | ./a.out -a14 -b 
hello

$ echo hello | ./a.out -a14
hello

如果只使用arg
-a
arg
-b
(而不是两者),则
optind
将正好是2,因为这样您就有了一个参数,并且一旦读取它,下一个opt索引就是2。那么您的if条件为false。

您的意思是标准输入?是的,标准输入Sorry什么是要求,什么不起作用?“$echo hello |./a.out-a14”不会按我的要求打印hello。有没有办法找出一个程序除了命令选项之外是否没有任何参数?我猜你的意思是
if(argc+1!=optind)
。我不确定你的要求是什么,所以很难说,但听起来很容易,只要试一下,看看你是否得到了预期的结果。
$ echo hello | ./a.out -a14 -b 
hello

$ echo hello | ./a.out -a14
hello
if(optind != 2) { ... }