arduino, функция для возврата массива символов

0
_10_11.ino: In function 'void loop()':
_10_11:73: error: initializer fails to determine size of 'results'
_10_11.ino: In function 'char getData()':
_10_11:160: error: invalid operands of types 'const char*' and 'const char [5]' to binary 'operator+'


Короче говоря, у меня есть функция char getData() которая возвращает char output[50] = "1: " + cmOne + " 2: " + cmTwo + " 3: " + cmThree + " 4: " + cmFour; где int cmOne, cmTwo, cmThree, cmFour.

В цикле я звоню:

char results[] = getData();

    client.println("1: %i", results[0]);
    client.println("2: %i", results[1]);
    client.println("3: %i", results[2]);
    client.println("4: %i", results[3]);

Я знаю, что я ошибаюсь в своих типах данных, назначая и т.д., Но я не согласен с тем, как сделать это лучше всего, любые предложения?

  • 0
    Пожалуйста, решите. Это вопрос о C или о C ++?
Теги:
arduino

1 ответ

4
Лучший ответ

Это невозможно, создайте массив фиксированного размера и передайте его функции в качестве указателя и инициализируйте его в функции

char results[4];

getData(results); /* the getData function should take a 'char *' paramenter */

client.println("1: %i", results[0]);
client.println("2: %i", results[1]);
client.println("3: %i", results[2]);
client.println("4: %i", results[3]);

и, конечно, если массив больше только с char results[A_BIGGER_SIZE];

Предположим, что получить данные просто помещает строку "ABC" в массив result это будет выглядеть

void getData(char *dest)
{
    dest[0] = 'A';
    dest[1] = 'B';
    dest[2] = 'C';
    dest[3] = '\0';
}
  • 0
    правильно ли я предположить, что я сделал бы результаты char [4] глобальными, чтобы к нему можно было получить доступ / назначить внешний цикл?
  • 0
    @ Симон Нет, вы должны просто объявить это в той же области цикла. И если вы хотите использовать его в какой-либо другой функции, просто передайте его как указатель на char * , и он не может быть назначен нигде, хотя вы можете назначить его элементам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню