我是C编程的新手,我有一些关于c++的经验,但没有C。我有一个关于getopt optarg参数的问题,这是字符串。我想检查-x标志的输入参数是否等于"狗"。我当前的代码如下:
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标志的输入变量是否为狗(如果是,变量sum变为0)。在我的情况下,sum变量始终为0,即使输入是'./main -x dog'。提前感谢大家!
注释不允许我缩进输出。这就是答案。我尝试了问题中的代码,我看到了正确的输出。
[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 = %dn", sum);
}