gpt4 book ai didi

没有参数的 c optarg atoi

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:55 29 4
gpt4 key购买 nike

考虑以下代码:

int number;

while((w = getopt(argc, argv, "n:s:")) != -1) {

switch (w){

case 'n': {

opfile->filename = optarg;

}break;

case 's': {

number = atoi(optarg);

}break;

}
}

现在,当我将两个选项或选项 s 都留空时,例如,我在没有命令行参数的情况下启动我的程序,那么 number 变量仍然会随机生成一个值(value)。

我在这里错过了什么? s 中的一些 if 语句?具体来说,我想介绍用户未在命令行参数中为 s 分配特定值/选项的情况。

最佳答案

当没有 's' 选项传递给程序时,根本不执行 case 's' 分支,并且没有其他任何东西将 number 设置为一个值,这意味着后续读取会触发未定义的行为。 (这可能远比在您稍后读取时只给您一个随机值更糟糕。这是一个必须修复的错误。)

但是因为没有其他东西触及number,所以改变就足够了

int number;

int number = 0;

或者您希望默认设置的任何其他内容。

(顺便说一句,你真的应该使用 strtol 而不是 atoi,因为 atoi 会忽略语法错误。)

关于没有参数的 c optarg atoi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800145/

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