One think your str_cpy() would work with the array element, but it doesn't. And, here's an interesting twist... if the second argument to one of LiteC's string functions is an element of a string[], it will accept this:
Code:
STRING* plain = "a string";
STRING* strarray [2];
strarray[0] = " appended 1";
strarray[1] = " appended 2";
str_cat( plain, strarray[0]); // ...good
str_cat( plain, strarray[1]); // ...good
str_cat( plain, " bla,bla"); // ...good
str_cat( strarray[0], plain); // ... invalid arguments error
str_cat( strarray[0], " something"); // ... invalid arguments error
It's almost like the compiler sees a STRING* [] element as a char*!