Как дешево объединить массивы символов и числа вместе?

У меня есть пара таких массивов и чисел:

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

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

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

char *merged = "blabla bla3.14556878";

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

Вы хотите иметь такой массив "blabla bla3.14556878"?

kiran Biradar 03.12.2018 11:03

Да, он хочет объединить их в один массив символов.

Askerman 03.12.2018 11:05

Вы видели этот "arduino.stackexchange.com/questions/26875/…"?

abjoshi - Reinstate Monica 03.12.2018 11:06
Указатели - это не массивы и массивы не указатели. Предлагаю вам прочитать раздел 6 c-faq. Код, который вы публикуете, не имеет абсолютно никакого массива, в который вы можете писать.
pmg 03.12.2018 13:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
99
1

Ответы 1

Используйте 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); 
    } 
}

Исповедуя эту линию, помните, что ни один из них являются стандартными библиотечными функциями.

WhozCraig 03.12.2018 11:16

Другие вопросы по теме