ST7735 вывод значения переменных с помощью библиотек TFT.h и UTFT.h

Ну перепиши библиотеку, если тебе так сильно хочется. Или ты думаешь, что “оно само” преобразуется в массив чаров? Нет. Это происходит в самой библиотеке просто…

Вот эту попробуй:

Спасибо. обязательно попробую.

Ты правда считаешь, что сменить библиотеку дисплея - это более простой метод, чем написать функцию из пяти строчек?
Нет предела лени…

зачем тебе много массивов? Сделай один массив и используй последовательно для печати всех переменных

1 лайк

Вот такой ещё способ нашёл :slight_smile:

typedef struct {
    char data[100];
} charStruct;

charStruct func() {
    charStruct sc;
    strcpy(sc.data, "Hello!");
    return sc; 
}

Но полагаю работает это так же как и String…

Странный код какой-то.
Всё равно ведь структура charStruct sc - локальная, да и что, для каждой новой строки свою функцию писать?
И, Serial вроде, структуры не выводит…

P.S. А..дошло, догадался Штирлиц…это юмор такой наверное))

В отличии от просто массива (локального), когда он “завернут” в структуру - return sc возвращает копию всей структуры.

Как возвращает? Где лежит структура? Как ей пользоваться после получения и как она долго проживёт?

Ну я полагаю как-то так:

typedef struct {
    char data[100];
} charStruct;

charStruct func() {
    charStruct sc;
    strcpy(sc.data, "Hello!");
    return sc; 
}

charStruct res = func();

Serial.print(res.data);

на выходе, канеш, создаётся временная структура, и работать возврат будет правильно, при условии, что будет правильно реализован копирующий конструктор. Конструктор по умолчанию даст только горе и слёзы.

1 лайк

Вопрос в другом - нафига это все , оборачивать строку в свою доморощенныею структуру и потом мучаться с ее возвратом? То есть, в итоге, заставить работать это можно, но как по мне, это типичный “индийский код”

1 лайк

Ребята, спасибо, разбираюсь с полученной информацией.

Особого веселья ситуации добавит наличие у структуры конструктора :slight_smile:

2 лайка

Извини, дошло наконец. Идею понял.

У меня вопрос. А зачем весь этот огород, нельзя snprintf() использовать что-ли?

Низя :face_with_bags_under_eyes:

Ну ладно, snprintf() отпадает. Не работает с float. Но itoa() и dtostrf() тоже нельзя?

Если нет, то почему? (в целях самообразования)

Евгений запретил - этого не достаточно разве?

2 лайка

И я запрещаю всё, кроме dtostrf(). Пользуйся им, пока можно.