gpt4 book ai didi

c - 从 'atoi' 收到未经验证的整数值

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

对于以下代码,klocwork 报告未验证的整数值“val”是从“atoi”接收到的,可用于访问数组

int main(int argc, char **argv)
{
int i = 0;
int val = 0;
for (i = 0; i < argc; i++)
{
if (argv[i])
{
val = atoi(argv[i]);
......
......
}
}
return 0;
}

我不知道如何解决这个问题。如果 argv[i] 不是数字,则 atoi 将返回 0。klocwork 在这里期待什么?

最佳答案

好吧,这里第一个明显的建议是:停止使用 atoiatoi 用于绘制草图,而不是用于实际代码。 atoi 没有任何失败反馈机制,并在溢出时产生未定义的行为。 ato... 组中的函数已在 C95 中半官方半废弃。从那一刻起,他们一直只是为了向后兼容而跟着一起走。我不知道为什么它们仍然没有被正式弃用。

您想将字符串转换为整数 - 使用 strtol 并记住通过分析 errono 和/或返回值来检查错误。而且,正如已经建议的那样,如果您使用结果值作为数组索引,那么确保索引在适当的范围。

关于c - 从 'atoi' 收到未经验证的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159166/

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