【发布时间】:2020-03-31 08:30:26
【问题描述】:
我从一年前就开始使用 atoi,最近几天我遇到了一个问题,即表达式 atoi("20") 给出的值是 0 作为输出。当我浏览谷歌时,我才知道它已被弃用,必须使用 strtol 。我知道的有趣的一点是 atoi 在内部使用 strtol。那么,改成strtol怎么解决这个问题呢?
【问题讨论】:
-
atoisill 工作..atoi("20")应该返回20。问题出在您没有显示的 your 代码中。 Edit您的问题并显示minimal reproducible example。另请阅读:How to Ask -
请提供一个可重现的最小示例。
atoi()函数可能已被弃用,但它仍然可以正常工作:example -
@SaitejaPabisetti
atoi是否使用strtol的事实无关紧要。atoi做documentation 所说的,不多也不少。错误在您的代码 中。可能atoi对你的使用太有限了,不看源码就不知道了。 -
atoi已经使用了几十年。如果在您的程序中的某个时刻atoi("20")返回0,这只是证明程序中的任何地方您有未定义的行为。 C 是一种低级语言,UB 的后果在本地是不必要的。这就是为什么它被称为 Undefined Behaviour... 的原因 -
我认为只要您提供相关代码,问题就会立即得到解决。我真的怀疑你的程序有
atoi("20")里面有一个文字字符串。它更有可能是stoi(str),您认为str应该是"20",但不要检查。您的评论“在第一次迭代中有效,在第二次迭代中无效”清楚地表明:问题出在您的代码中。
标签: c