Как дешево объединить массивы и числа? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть пара массивов и чисел, подобных этому:

char *test = "bla";
char *test1 = "bla bla";
float test2 = 3.14;
int test3 = 556878;

Я хотел бы объединить их все в указанном порядке в один массив символов, но я не могу использовать что-то вроде snprintf, потому что этот код работает на Arduino, где память стоит дороже.

Ожидаемый результат:

char *merged = "blabla bla3.14556878";

Как лучше всего это сделать?

1 Ответ

0 голосов
/ 03 декабря 2018

Используйте itoa() и ftoa() для преобразования значений int и float в укусы, затем используйте strcat.

itoa будет работать в arduino.

Функция 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); 
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...