What is the advantages that led to the implementation of C strings as zero-terminated character arrays instead of something where the length of the string is explicitly stored?
If I had to choose an implementation, I would have surely ended up with the second one. In fact, the complexity for finding the length of a zero-terminated string is linear, while with the other possibility it would be O(1) (or slightly worse, but far, far better than O(n)).
To me, the choice which has been made seems very unnatural.