Why is C 'supposed to be primitive?' If C was supposed to be so primitive, there wouldn't even be 'str' functions, it would just be memcpy functions and you would be responsible yourself for keeping track of null terminators.
C just needs a bolstered set of string-handling functions. Much like C++ has the Boost libraries.