Arduino的dtostrf

#include<stdlib.h>

void setup() {
  Serial.begin(115200);
  char dataH[5];
  char dataC[5];
  char dataF[5];

  float h = 56.00;
  float c = 31.50;
  float f = 88.70;

  dtostrf(h,5,2,dataH);
  dtostrf(c,5,2,dataC);
  dtostrf(f,5,2,dataF);

  Serial.println(dataH);
  Serial.println(dataC);
  Serial.println(dataF);

}

void loop() {
  // put your main code here, to run repeatedly:

}

我期望这些是结果:

56.00
31.50
88.70

相反,这是我得到的:

blank  
blank  
88.70

前两行是空白的(我写的文本为空白,否则将被stackoverflow跳过。

解决方法:

您应该将字符数组声明为

  char dataH[6];
  char dataC[6];
  char dataF[6];

这样他们就可以'\0'在最后存储空间

posted @ 2020-03-04 21:54  chenlife  阅读(1870)  评论(0)    收藏  举报