首页 > 解决方案 > 如何在 C 中解析 char 缓冲区?

问题描述

所以这是我拥有的 char 缓冲区:

Manual: h:0147(0051.6) v:0842(0296.0) H:0114(0040.0) V:0697(0245.0)

请注意,这个缓冲区不一定是空终止的。

我想要做的是从括号中获取最后两个数字()

我打算使用sscanf()这样的:

sscanf(buffer, "H:%4d(%f) V:%4d(%f)", &num1, &num2, &num3, &num4);

但我相信这是不可能的,因为它不是空终止的?

我怎么可能从中得到这两个浮点数以供以后使用?

一种方法是,由于缓冲区仍然是相同的大小和格式,只有数字发生变化,只使用索引来获取它,但我认为必须有更好的方法。

标签: c

解决方案


感谢@Barmar 和@RemyLebeau 的帮助。

问题的解决方法如下

sscanf(buffer, "%*[^H]H:%4d(%f) V:%4d(%f)", &num1, &num2, &num3, &num4);

像魅力一样工作


推荐阅读