【发布时间】:2021-11-08 15:33:35
【问题描述】:
其实我有一个这种类型的字符串:
"1,你好,E025FFDA,-126.56,52.34,true"
我想使用 sscanf 解析它,将这些值存储在相应类型的变量中
uint, char[], 可能是字符串, ufloat ?, float, bool
我将 sscanf 与 "%[^',']" 格式说明符一起使用,并在一定范围内测试每个值是否正确。
这是我的代码:
- param 是指向字符串开头的指针
- temp2 一个临时变量
- local_ptr 是 param 的副本,不能修改 param
- RCV 包含我所有参数的结构
if((get_param_length(param) != 0) && (sscanf(local_ptr, "%[^',']", &temp2) == 1))
RCV.binarypayload = temp2;
else
error = 1;
您知道存储我的值的最佳类型吗?或者有什么建议?
【问题讨论】:
-
负浮点数就是
float -
浮点数最好存储在 'float' 或 'double' 类型中
-
%[^',']应该做什么?你的意思是%[^,]? -
在我遇到的大多数情况下,无论如何都不需要使用浮点数,可以用定点算术代替(考虑可以使用子单位的货币,例如美分而不是欧元或美元,或者固定分数)。如果这对您来说是一个选项,您可以改为读取两个整数并计算最终结果。