_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]);
Я знаю, что я ошибаюсь в своих типах данных, назначая и т.д., Но я не согласен с тем, как сделать это лучше всего, любые предложения?
Это невозможно, создайте массив фиксированного размера и передайте его функции в качестве указателя и инициализируйте его в функции
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';
}
char *
, и он не может быть назначен нигде, хотя вы можете назначить его элементам.