gpt4 book ai didi

c - 如果没有插入,optarg 的值是多少

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:16 28 4
gpt4 key购买 nike

我有下一个代码。

int opt;

while ((opt = getopt(_argc, _argv, "n:pcs:")) != -1)
{
switch (opt)
{
case 'n':
*_numberOfMessages = atoi(optarg);
break;

case 'p':
if(*_consumereFlag)
{
return ERROR;
}
*_producerFlag = ON;
break;

case 'c':
if(*_producerFlag)
{
return ERROR;
}
*_consumereFlag = ON;
break;

case 's':
*_delayTimemSec = atoi(optarg);
break;

default:
return ERROR;
}
}
return 0;

代码从用户那里获取参数,并将它们插入到调用 optarg 的字符串中。如果我在 -n 或 -s 之后插入 arg,一切正常。问题是我只想写 -n 之后什么都不写。如果 -n 或 -s 之后没有参数,那么 optarg 是什么?

最佳答案

语法 "n:" 表示 n 应该 后跟一个参数。如果不是,那就是错误。默认情况下,任何错误都会返回字符 "?"

如果您有 GNU getopt(),那么您可以改用双冒号:"n::"。双冒号表示参数是可选的。这样 getopt 无论如何都会返回 n,而 optarg 将是 NULL 或一个有效的指针。但是,至少在我的测试中,getopt 在这种情况下不需要在选项后有空格。即 "n:" 允许 "-n 100""-n100",而 "n::" 只允许后者。

关于c - 如果没有插入,optarg 的值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48497511/

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