gpt4 book ai didi

c - 使用 sscanf 解析十进制字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:41 26 4
gpt4 key购买 nike

我想将字符串解析为整数。该字符串可以包含任何数据,包括无效或浮点整数。这是我的代码,显示了我如何使用 sscanf():

errno = 0;
uint32_t temp;
int res = sscanf(string, "%"SCNu32, &temp);
if (0 != errno || 1 != res)
{
return HEX_ECONVERSION;
}

其中字符串作为参数传递。

我预计此代码会在 "3.5" 数据上失败。但不幸的是,sscanf()"3.5" 截断为3 并将其写入temp 整数。怎么了?

我是否错误地使用了 sscanf()?以及如何使用 sscanf 完成此任务,而无需编写手写解析器(通过直接调用 strtoul() 或类似方法)。

最佳答案

3 是一个有效的整数。不幸的是,sscanf 不够复杂,无法向前看并检测到 3.5 是一个 float 并且不会给您任何结果。

尝试使用 strtol 并测试返回指针以查看它是否解析了整个字符串。

关于c - 使用 sscanf 解析十进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21465913/

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