Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C++ (Arduino), přiřazování hodnot ve strukturované proměnné

V proměnné chci vložit znaky do řetězce, ale nemohu přijít na jednoducý způsob. Jediné co mi funguje, je zápis znak po znaku nebo formátovaný tisk. Oba způsoby mi přijdou trochu overkill a neelegantní. Ty co nefungují jsou v komentáři s chybovou hláškou.
Bohužel moje znalost C++ je slabá, dostal jsem se k němu až přes Arduino. Takže je skoro jisté, že jenom neznám ten správný příkaz nebo jsem něco špatně (ne)pochopil.
Byl by prosím někdo od té dobroty a naznačil mi správný směr. Případně vysvětlil, proč u proměnné Barva1 jde vložit řetězec který je kratší než definice a strukturované proměnné Light1.Colour to hlásí chybu?
Děkuji za trpělivost.

struct mix {                //definice strukturovaneho zaznamu
  int BluePin;              //cele cislo             
  boolean BlueValue;        //logicka hodnota
  float Lumi;               //cislo s desetinnou carkou
  char Colour[9];           //retezec
};

mix Light1;                 //deklarace promenne Light1 s datovym typem mix
char Barva1[7];             //deklerace retezce

void setup() {
  Serial.begin(9600);
  Light1.BluePin = 4;               //int do polozky BluePin v zaznamu Light1
  Light1.BlueValue = false;         //boolean do polozky BlueValue v zaznamu Light1
  Light1.Lumi = 15.8521;            //float do polozky Lumi v zaznamu Light1
  char Barva1[] = "ASDF";           //znaky do retezce
  Light1.Colour[3] = 'A';           //jeden znak na urcenou pozici retezce, to funguje
  sprintf(Light1.Colour,"",Barva1); //formatovane kopirovani, to funguje
  
        //tohle uz nefunguje
  //Light1.Colour = "QW";         //incompatible types in assignment of 'const char [3]' to 'char [9]'
  //Light1.Colour = "QWERTYUI";   //invalid array assignment
  //Light1.Colour = Barva1;       //incompatible types in assignment of 'char [5]' to 'char [9]'
  //Light1.Colour[0] = Barva1;    //invalid conversion from 'char*' to 'char' [-fpermissive]
}

void loop() {
  Serial.println(Light1.BluePin);
  Serial.println(Light1.BlueValue);
  Serial.println(Light1.Lumi, 2);
  Serial.println(Light1.Colour);
  delay (1000);
}

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny