gpt4 book ai didi

c - Optarg 字符串比较 C

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:45 26 4
gpt4 key购买 nike

我是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)。在我的例子中,总和变量始终为 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 = %d\n", sum);
}

关于c - Optarg 字符串比较 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40322024/

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