[SOLVED] Initializing an array of a typedef struct with arrays within

I am not new to Arduinos and Programming in C.
I am creating an array of a struct, and have an array of booleans within that struct,
I cannot get the boolean array inside the struct to initialize.
This is so easy in Python!!!

typedef struct  {
  char * l_name;
  byte x_m;
  byte y_m;
  boolean period[];
} myStruct;

myStruct structs[30];

void setup() {
  structs[0] = {"My Name", 0, 0, {true, true, false, false}};
  structs[0] = {"My Second Name", 0, 0, {true, false}};
  //.......... and so on.......
}

void loop() {
  // put your main code here, to run repeatedly:
}

I get this error when compiling:

No match for 'operator=' (operand types are 'myStruct' and '<brace-enclosed initializer list>')

If I comment out the boolean array and remove that from the declaration of structs[0] everything is fine.
I could have a separate array holding the boolean items, but thisis not so elegant.
Each item in the structs array has a diffent number of boolean items. anything from 2 to 20.
If I set the period array to say 10, then it works, but I have blank items if there are less than 10 items.
Any help much appreciated.

You need a size for the array inside the structure.
C/C++ doesn’t have run-time sizing of arrays.

westfw:
You need a size for the array inside the structure.
C/C++ doesn’t have run-time sizing of arrays.

Also, you can't do assignment to the struct elements that way. It has to be done when the array is defined:

typedef struct  {
  const char * const l_name;
  byte x_m;
  byte y_m;
  boolean period[4];
} myStruct;

myStruct structs[] = {
  {"My Name", 0, 0, {true, true, false, false}},
  {"My Second Name", 0, 0, {true, false, true, false}}
};

void setup() {
}

void loop() {
}

If the l_name field needs to be changeable, then reserve a fixed-size char array in the struct:

typedef struct {
  char l_name[20];
  byte x_m;
  byte y_m;
  boolean period[4];
} myStruct;

myStruct structs[] = {
  {"My Name", 0, 0, {true, true, false, false}},
  {"My Second Name", 0, 0, {true, false, true, false}}
};

void setup() {
}

void loop() {
}

Consider, perhaps, a class.
Then, your booleans could be condensed into single bits, so eight can fit into a byte, accessed by simple functions.

Many thanks to you both.
Overnight I realised I could save the array as a uiny8_t then do Bit operations to get the value.
However, defining the array as it is created suits me better.
Regards