gpt4 book ai didi

c++ - 对此 argv 的使用感到困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:19 29 4
gpt4 key购买 nike

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

for (argc--, argv++; argc > 0; argc -= argCount, argv += argCount) {
argCount = 1;
switch (argv[0][1]) {
case 'q':
testnum = atoi(argv[1]);
argCount++;
break;
default:
testnum = 1;
break;
}
}
//...............

我的问题是 argv[0][1] 是什么意思,for() 中的条件让我感到困惑,我的意思是 for (argc--, argv++; argc > 0; argc -= argCount, argv + = argCount)

//谢谢大家....**argv[0][1] 应该是 argv[0][1],那是我的错,不是代码编写者。

最佳答案

该代码看起来不正确。 **argv[0][1]试图取消引用 char .

argv[0][1]会有意义,意思是“在 char 中取第一个 char* 的第二个 argv。”恕我直言,代码正在尝试检测 -q命令行标志(然后将 testnum 设置为下一个参数的 int 版本,盲目地假设它存在),但它跳过了对 - 的检查, 并盲目地假设它在那里,并且没有其他论点会有 q作为第二个字符。

这段代码需要重构。这是一种方法:

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

int testnum = 1;
for (int argi = 1; argi < argc; ++argi) {
if(argv[argi][0] == '-') {
switch (argv[argi][1]) {
case 'q':
if(argi + 1 == argc || argv[argi + 1][0] == '-') {
/* Handle missing argument error. */
return 1;
}
testnum = atoi(argv[++argi]);
break;
default:
/* Handle unrecognized flag error. */
return 1;
}
}
else
{
/* Handle non-flag parameter. */
}

/* Continue with program. */
return 0;
}

关于c++ - 对此 argv 的使用感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12842207/

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