In an attempt to bring this thread to a positive conclusion, here are my thoughts:
1) Strings are, by definition, variable in length. At one point in a program, a given string might be 1 character long, at another point it might be 50. (Notice that I used the term "character" and not byte. That's because we, as the programmer, don't really need to know how many bits contains a character. On the NXT it is 8 bits (byte). In other systems it might be 6 bits or 16 bits.)
2) There is nothing wrong about putting a string in a structure (struct). The implementation details will handle this just fine.
3)
However, attempting to flatten/unflatten a structure containing a string can lead to bad things. John, in his post
here, gave an explanation about how to address this issue.
4) To make life easier on us KISS* programmers, the size of the structure should be calculable at compile time. So, don't use a "string", use a "char array of fixed length", that way you and unflatten know what goes where and the structure will flatten/unflatten just fine.
* KISS = Keep It Simple Stupid. There are various words put in for the last one, but the first time I heard KISS (many years ago), Stupid was the word used. It it not politically correct now... That being said, many times my code is complex, but in trying to adhere to KISS, don't make things any harder than they have to be.