【发布时间】:2014-01-30 19:37:09
【问题描述】:
我想将字符串解析为整数。
字符串可以包含任何数据,包括无效或浮点整数。这是我的代码,它显示了我如何使用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() 或类似的方法)。
【问题讨论】: