Optarg字符串比较C 我是C编程新手,我有C++的一些经验,但是没有C。我有一个关于GETOPT OpTARG参数的问题,这是字符串。我想检查-x标志的输入参数是否等于“dog”。我当前的代码如下所示: int main(int argc, char** argv){ int c; extern char *optarg; extern int optind; extern int optopt; int sum=0; while ( (c = getopt(argc, argv, ":x:h")) != -1) { switch (c) { case 'h': getHelp(); break; case 'x': if(strcmp("dog", optarg)== 0){ sum = 1; } else { sum = 0; } break; } }
总之,我想检查-x标志的输入变量是否为dog(如果是,变量sum将更改为0)。在我的例子中,sum变量始终为0,即使输入为“/main-xdog”。Optarg字符串比较C 我是C编程新手,我有C++的一些经验,但是没有C。我有一个关于GETOPT OpTARG参数的问题,这是字符串。我想检查-x标志的输入参数是否等于“dog”。我当前的代码如下所示: int main(int argc, char** argv){ int c; extern char *optarg; extern int optind; extern int optopt; int sum=0; while ( (c = getopt(argc, argv, ":x:h")) != -1) { switch (c) { case 'h': getHelp(); break; case 'x': if(strcmp("dog", optarg)== 0){ sum = 1; } else { sum = 0; } break; } },c,strcmp,getopt,C,Strcmp,Getopt,总之,我想检查-x标志的输入变量是否为dog(如果是,变量sum将更改为0)。在我的例子中,sum变量始终为0,即使输入为“/main-xdog”。 提前谢谢大家 注释不允许我缩进输出。这就是答案。我尝试了问题中的代码,看到了正确的输出 [tmp]$./a.out -x cat Sum = 0 [tmp]$./a.out -x dog Sum = 1 代码如下: #include <stdio.h> #include <stdlib.h> int main(int a
提前谢谢大家 注释不允许我缩进输出。这就是答案。我尝试了问题中的代码,看到了正确的输出
[tmp]$./a.out -x cat
Sum = 0
[tmp]$./a.out -x dog
Sum = 1
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv){
int c;
extern char *optarg;
extern int optind;
extern int optopt;
int sum=0;
while ( (c = getopt(argc, argv, ":x:h")) != -1) {
switch (c) {
case 'h':
break;
case 'x':
if(strcmp("dog", optarg)== 0){
sum = 1;
} else {
sum = 0;
}
break;
}
}
printf("Sum = %d\n", sum);
}
#包括
#包括
int main(int argc,字符**argv){
INTC;
外部字符*optarg;
外部-内部选项;
外-内光电转换;
整数和=0;
而((c=getopt(argc,argv,“:x:h”)!=-1){
开关(c){
案例“h”:
打破
案例“x”:
如果(strcmp(“狗”,optarg)==0){
总和=1;
}否则{
总和=0;
}
打破
}
}
printf(“总和=%d\n”,总和);
}
我编译并尝试了您的代码,我认为狗的输入和值为1,猫的输入和值为0。我同意Jay的观点。我也在尝试同样的事情,并且添加了打印语句。当您执行foo-xdog
谢谢,您说得对,它可以正常工作。看来我在参数读取顺序上有问题。