If you are using C and do some non-trivial work with strings you should either use a good library to handle strings or build your own.
It is not that difficult in practice.
The old C std lib is, in my opinion, outdated, obsolete and a very bad fit for complex string handling, especially on the memory management side.
In my own framework, the string management module is using a dedicated memory allocator and a "high level" string API with full UTF8 support from the start.
As a general rule, I think that the C std lib is the weakest part of the C language and it should only be used as a fallback.
> the C std lib is the weakest part of the C language and it should only be used as a fallback.
I've been musing for a while now: what would it look like if we were to discard the C library and design a new one, leaving the language itself intact?