У меня есть пара таких массивов и чисел:
char *test = "bla";
char *test1 = "bla bla";
float test2 = 3.14;
int test3 = 556878;
Я хотел бы объединить их все в указанном порядке в один массив символов, но я не могу использовать что-то вроде snprintf, потому что этот код работает на Arduino, где память ограничена.
Ожидаемый результат:
char *merged = "blabla bla3.14556878";
Как лучше всего это сделать?
Да, он хочет объединить их в один массив символов.
Вы видели этот "arduino.stackexchange.com/questions/26875/…"?





Используйте itoa() и ftoa() для преобразования значений int и float в звуки, затем используйте strcat.
itoa будет работать в ардуино.
Функция ftoa представлена ниже:
char buff1[10];
char buff2[10];
itoa(test3,buff1,10);
ftoa(test2,buff2,3);
void ftoa(float n, char *res, int afterpoint)
{
// Extract integer part
int ipart = (int)n;
// Extract floating part
float fpart = n - (float)ipart;
// convert integer part to string
itoa(ipart, res, 10);
int i = strlen(res);
// check for display option after point
if (afterpoint != 0)
{
res[i] = '.'; // add dot
// Get the value of fraction part upto given no.
// of points after dot. The third parameter is needed
// to handle cases like 233.007
fpart = fpart * pow(10, afterpoint);
itoa((int)fpart, res + i + 1, 10);
}
}
Исповедуя эту линию, помните, что ни один из них являются стандартными библиотечными функциями.
Вы хотите иметь такой массив
"blabla bla3.14556878"?