【发布时间】:2019-11-21 13:12:45
【问题描述】:
我正在尝试使用 sscanf() 读取数字,但我使用双变量没有成功,但可以读取 int
双重示例
//double var reading not working
const char KBuffer[80] = "0x3:2.1:2.1:2.1";
int rt;
double p,i,d;
int n = sscanf(KBuffer, "%x:%lf:%lf:%lf", &rt, &p, &i, &d);
Serial.println();
Serial.print("rt "); Serial.print(rt);
Serial.print(" P ");Serial.print(p);
Serial.print(" i ");Serial.print(i);
Serial.print(" d ");Serial.print(d);
// 输出 rt 3 P 0.00 i ovf d 0.00
整数示例
// int reading working ok
const char KBuffer[80] = "0x3:2:2:2";
int rt;
int p,i,d;
int n = sscanf(KBuffer, "%x:%d:%d:%d", &rt, &p, &i, &d);
Serial.println();
Serial.print("rt "); Serial.print(rt);
Serial.print(" P ");Serial.print(p);
Serial.print(" i ");Serial.print(i);
Serial.print(" d ");Serial.print(d);
// output
rt 3 P 2 i 2 i 2
所以知道做错了什么
当我在 c++ 在线编译器上运行时相同的代码,例如:https://onlinegdb.com/ryS8zfE3r
我得到了正确的结果
【问题讨论】:
-
"%d:%lf:%lf:%lf"->"%x:%lf:%lf:%lf" -
@Jabberwocky 恐怕还不够
-
@Jabberwocky 我更新了它,有点错误但问题是一样的
-
@SamVarshavchik Arduino 语言是具有 C++ 语法和非标准库的 C++ 编译器。
-
@AnttiHaapala 它是没有 90% 的 C++ 的 C++ 变体 - 对标准 C++ 库的支持非常有限
标签: c++ arduino arduino-c++