Формирование строки

yah
Offline
Зарегистрирован: 09.11.2013
int one = 1;
float two = 26.7;
double ther = 26.700l;

char str[40];

void setup()
{
  Serial.begin(9600);

  snprintf(str, sizeof(str), "MG: X=%6d; Y=%6d; Z=%6d;", one, two, ther);
  
  Serial.println(str);
}

void loop()
{
  while(1);
}

этот код выдает 

MG: X=     1; Y=-26214; Z= 16853;

как сделать что бы обрабатывался float и double нормально, и перед переменными всегда пробелы выставляет как их убрать?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013
char one[10]
dtostrf(12.123, 5, 2, one);

char dtostrf (double [значение],         signed char [длина включая  точку и минус],       unsigned char [после запятой] ,  char  [строка])

функция также возвращает указатель на строку.

yah
Offline
Зарегистрирован: 09.11.2013

насколько я понял мой код должен быть такой

double one = 17.123;
char one_c[10];

char str[80];

void setup()
{
  Serial.begin(9600);

  dtostrf(one, 5, 2, one_c);
  snprintf(str, sizeof(str), "X=%6d", one_c);
  
  Serial.println(str);
}

void loop()
{
  while(1);
}

и выдает это чудо это: X=   282

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013
double one = 17.123;
char one_c[10];

char str[80];

void setup()
{
  Serial.begin(9600);

  dtostrf(one, 6, 3, one_c);
  snprintf(str, sizeof(str), "X=%s", one_c);
  
  Serial.println(str);
}

void loop()
{
  while(1);
}