有没有一种简单的方法可以从嵌入式C ++ GNU ARM中的字符串中解析浮点数?

祖恩

我的C ++ GNU ARM嵌入式系统中有以下字符串:

char* TempStr = "pressure 0.85";

我需要将数字值存储为称为presmax的单独的float变量。

到目前为止,要解析的数字始终是整数,因此我可以使用sscanf而不会出现任何问题。但是,正如我在网络上广泛了解的(并且经验丰富的第一手资料)一样,sscanf通常不适用于嵌入式系统中的浮点数(没有大量的配置/闪存空间丢失)。

我想知道是否有人有任何建议。也许我可以将“ 0.85”解析为一个字符数组?我不太确定该怎么做,尽管它可以让我使用atof()将其转换为浮点数,就像我在程序中的其他地方所做的那样。

我意识到另一种选择是编写一个函数,但是我是一个业余程序员,所以如果有一个更健壮/更有效的解决方案,我最好采用。

更新:如果有帮助,TempStr是使用FatFs从SD卡上的.txt文件复制的字符串。这是完整的代码,每次读取两行并将结果存储在TempStr中。每次存储TempStr时,我都会将字符串解析为其各自的变量:

FILINFO fno;
FIL fsrc;
int FileEnd = 0;
int CurrentLine = 0;
int pressmax = 0;
int timemax = 0;
char* TempStr;
WCHAR CharBuffer[100];

res = f_stat("config.txt", &fno);                               //check for config.txt file
res = f_open(&fsrc, "config.txt", FA_READ | FA_OPEN_ALWAYS);    //open config.txt file

//first line
TempStr = f_gets((char*)CharBuffer, sizeof(fsrc), &fsrc);      
CurrentLine ++;
FileEnd = FileEnd + strlen(TempStr) + 1;

//sscanf(TempStr, "%*s %i", &presmax);       //what I did when presmax was an int

//second line
while ((f_eof(&fsrc) == 0)){                                   
        TempStr = f_gets((char*)CharBuffer, sizeof(fsrc), &fsrc);
        CurrentLine ++;
        FileEnd = FileEnd + strlen(TempStr) + 1;
}

//sscanf(TempStr, "%*s %i", &timemax);     

在带有Eclipse的STM32L上使用GNU ARM Build工具。

内森·奥利弗

如果保证您的输入将采用以下形式

text floating_point_number

然后,一旦有了TempStr指针,就可以将指针向前移动直到到达空格,然后再往前移一个位置以到达字符串的浮点部分。然后,您将该指针传递给,atof以从字符串的其余部分中获取值。看起来像

char* fp = TempStr;
while (*fp != ' ') ++fp; // get to the space
double value = atof(++fp); // advance to floating point part and pass to atof

如果您TempStr在获得价值后不需要,那么可以摆脱fp并使用

while (*TempStr != ' ') ++TempStr ; // get to the space
double value = atof(++TempStr); // advance to floating point part and pass to atof

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有一种方法可以向Jmeter中的嵌入式资源请求添加参数?

解析带有浮点数的json字符串作为python中的字符串

使用gnu autoconf,有没有一种内置到沙箱中的方法?

有没有一种简单的方法可以在C#中创建序数?

解析浮点数的C字符串

Python中是否有一种从字符串读取两个浮点数的方法

C ++中的Json:将数字解析为字符串,以避免浮点数错误

有没有一种简单的方法可以将小数格式化为sql中的字符串

有没有一种简单的方法可以从 JSON 字符串中获取 Manatee.JsonObject?

有没有办法检查一个字符串是否可以是C中的浮点数?

将浮点数传递到C中的字符串中

如何简单地将浮点数转换为c中的字符串?

查找给定字符串中的所有浮点数或整数

替换在字符串中具有浮点数的变量并写入新文件 Python

有没有一种简单的方法可以在 Kotlin 中通过 _id 获取对象?

有没有一种简单的方法可以从 Kotlin 的对象列表中获取数组?

有没有一种简单的方法可以在 Kotlin 中优化代码?

有没有一种简单的方法可以更改 django 中的路径?

有没有一种简单的方法可以在Excel中重新格式化?

有没有一种简单的方法可以替换为Excel中的占位符?

有没有一种简单的方法可以在JSF中实现路由?

有没有一种简单的方法可以在Android中获得整数?

有没有一种简单的方法可以在Android Studio中查看颜色?

有没有一种简单的方法可以在WebStorm中评估JavaScript?

有没有一种简单的方法可以在Rust中对枚举字段进行突变?

有没有一种简单的方法可以为列表中的单词添加空格?

有没有一种简单的方法可以在 python 中获取文本输入字段?

有没有一种简单的方法可以在类中全局变量

有没有一种简单的方法可以在Matlab GUI中显示“表格”?