gpt4 book ai didi

c - 执行 getOpts 时如何从 stdout 获取输入

转载 作者:行者123 更新时间:2023-11-30 16:35:12 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h>

int main(int argc, char **argv) {

int o;
int a;
int b = 1;

while ((o = getopt(argc, argv, "a:b")) != -1) {
switch (o) {
case 'a' :
a = atoi(optarg);
break;


case 'b' :
b = 0;
break;
default :
printf("Error\n");
exit(1);
}
}

if(optind != 2) {
int c;
while((c = getchar()) != EOF) {
putchar(c);
}
}

}

假设这是合法的:

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

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

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

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

就像我怎么知道不存在“./a.out -a10 -b(这部分)”一样,如果不存在该部分,我们就会处理标准输出。

最佳答案

原因是这个 if 语句:

if(optind != 2) { ... }
如果您仅使用 arg -a OR arg -b (而不是两者),因为这样你就有一个参数,一旦你读到它,下一个 opt 索引就是 2。那么你的 if 条件为 false。

关于c - 执行 getOpts 时如何从 stdout 获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49019985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com