Определение типа данных char и использование с помощью sprintf

У меня была следующая настройка ранее:

    String INSERT_SQL = "";
    // inserting to sql database on mysql server
    INSERT_SQL = "";
    INSERT_SQL.concat("INSERT INTO arduinoSensorData.sensorLog (out_temperature, out_humidity, ");
    INSERT_SQL.concat(" drwngRoom_temperature, drwngRoom_humidity, pot1_soilMoisture, pot1_avg_SoilMoisture,");
    INSERT_SQL.concat(" wateringPot1) VALUES ('");
    INSERT_SQL.concat(outdoorTempInC);
    INSERT_SQL.concat("', '");
    INSERT_SQL.concat(outoorHumidity);
    INSERT_SQL.concat("', '");
    INSERT_SQL.concat(indorTempinC);
    INSERT_SQL.concat("', '");
    INSERT_SQL.concat(h);
    INSERT_SQL.concat("', '");
    INSERT_SQL.concat(val);
    INSERT_SQL.concat("', '");
    INSERT_SQL.concat(avgVal);
    INSERT_SQL.concat("', '");
    if (wateringBasedOnAlarm){
      waterMsg = "water based on alarm";

    } else waterMsg = soilMsg;
    INSERT_SQL.concat(waterMsg);
    INSERT_SQL.concat("');");   

А позже я конвертировал его в char следующим образом:

const char *mycharp = INSERT_SQL.c_str();

Который я понял неправильный подход, так как в каждой итерации функции цикла MCU Arduino это будет занимать больше памяти!

Итак, я решил изменить INSERT_SQL обуглить вместо того, чтобы объявить его String на первом месте.

Я инициализировал INSERT_SQL как char следующим образом:

char INSERT_SQL[295];

Потому что я понял, что общая длина не будет более 295,

Но когда компилятор доходит до строки:

INSERT_SQL = "";

Я получил сообщение об ошибке:

несовместимые типы в присвоении 'const char [1]' для 'char [295]'

Итак, это первое, что мне нужно, это исправить, а во-вторых, я думаю, что я не могу использовать concat с типом данных char, так что в этом случае, как мне заполнить значения в SQL-запрос, используя sprintf?

1 ответ

Компилятор точно говорит вам, что не так.

char INSERT_SQL[295];
INSERT_SQL = "";

Вы, вероятно, хотите сделать, как:

char INSERT_SQL[295];
INSERT_SQL[0] = 0x00;
::strcat(INSERT_SQL, "INSERT INTO....
Другие вопросы по тегам