I've seen more home made string implementations in C than I can remember. Most all of them were horrible. Say what you like about C++, but it certainly fixed that mess. And I love Go... I think it's the future.
I bet all of them derive either from the days before std::string, which only started to be commonly supported after 2000, as compilers were catching up with C++98.
The typical rite of passage that every C++ developer needs to write their own string and vector classes as part of learning C before C++, instead of properly C++ as we can do nowadays.
Finally those shops that don't allow to use proper C++ on their code, rather C with Classes.