Arduino奇怪的行为dtostrf

时间:2017-06-17 12:55:57

标签: arduino

我不知道这段代码有什么问题:

ArrayList

我期待这些结果:

#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

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

2 个答案:

答案 0 :(得分:4)

您应该将字符数组声明为

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

这样他们就有空间在末尾存储'\0'

答案 1 :(得分:0)

好的,这是我的错。在查看doc之后,我需要创建缓冲区。

char buff[5];
dataH = dtostrf(h,5,2,buff);

我认为buff会立即被垃圾收集,如果不在下一个语句中消费就会消失。